##// END OF EJS Templates
Para brobar checkeo manual
ralonso -
r92:93
parent child
Show More
@@ -1,794 +1,803
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 """
3 """
4 Module implementing MainWindow.
4 Module implementing MainWindow.
5 """
5 """
6
6
7 from PyQt4.QtGui import QMainWindow
7 from PyQt4.QtGui import QMainWindow
8 from PyQt4.QtCore import pyqtSignature
8 from PyQt4.QtCore import pyqtSignature
9 from PyQt4 import QtCore
9 from PyQt4 import QtCore
10 from Ui_MainWindow import Ui_MainWindow
10 from Ui_MainWindow import Ui_MainWindow
11 from Ui_Parameters import Ui_Parameters
11 from Ui_Parameters import Ui_Parameters
12 from Ui_About import Ui_About
12 from Ui_About import Ui_About
13 from PyQt4 import QtGui
13 from PyQt4 import QtGui
14 from subprocess import *
14 from subprocess import *
15 import sys
15 import sys
16 import os
16 import os
17 #import subprocess
17 #import subprocess
18 import time
18 import time
19 import commands
19 import commands
20 from functions import functions
20 from functions import functions
21 from functions import functions2
21 from functions import functions2
22
22
23 class MainWindow(QMainWindow, Ui_MainWindow):
23 class MainWindow(QMainWindow, Ui_MainWindow):
24 """
24 """
25 Class documentation goes here.
25 Class documentation goes here.
26 """
26 """
27
27
28 def __init__(self, parent = None):
28 def __init__(self, parent = None):
29 QMainWindow.__init__(self, parent)
29 QMainWindow.__init__(self, parent)
30 self.setupUi(self)
30 self.setupUi(self)
31 self.setupUi2()
31 self.setupUi2()
32
32
33 def setupUi2(self):
33 def setupUi2(self):
34
34
35 self.txtInfo.append("cambio 1")
35 self.txtInfo.append("cambio 1")
36
36
37 self.allTrue = False
37 self.allTrue = False
38
38
39 if self.allTrue == True:
39 if self.allTrue == True:
40 self.var_real_principal = True
40 self.var_real_principal = True
41 self.var_real_detect_devices = True
41 self.var_real_detect_devices = True
42 self.var_real_iso = True
42 self.var_real_iso = True
43 self.var_real_burn = True
43 self.var_real_burn = True
44 self.var_real_check = True
44 self.var_real_check = True
45 self.var_real_eject = True
45 self.var_real_eject = True
46 self.var_real_manual_check = True
46 self.var_real_manual_check = True
47 self.var_real_show_cmd = True
47 self.var_real_show_cmd = True
48
48
49 else:
49 else:
50 self.var_real_principal = False
50 self.var_real_principal = False
51 self.var_real_detect_devices = False
51 self.var_real_detect_devices = False
52 self.var_real_iso = False
52 self.var_real_iso = False
53 self.var_real_burn = False
53 self.var_real_burn = False
54 self.var_real_check = False
54 self.var_real_check = False
55 self.var_real_eject = False
55 self.var_real_eject = False
56 self.var_real_manual_check = True
56 self.var_real_manual_check = True
57 self.var_real_show_cmd = True
57 self.var_real_show_cmd = True
58
58
59 if self.var_real_detect_devices == True:
59 if self.var_real_detect_devices == True:
60 # Reconocimiento de los dispositivos de grabacion
60 # Reconocimiento de los dispositivos de grabacion
61 functions2.detect_devices(self)
61 functions2.detect_devices(self)
62 else:
62 else:
63 functions2.set_devices_test(self)
63 functions2.set_devices_test(self)
64
64
65 #Inicialiazacion de variables
65 #Inicialiazacion de variables
66 self.var_Discs = 0 #Numero de discos del proyecto
66 self.var_Discs = 0 #Numero de discos del proyecto
67 self.var_Copys = 0 #Numero de copias
67 self.var_Copys = 0 #Numero de copias
68 self.var_disc_n = 0 # disco actual
68 self.var_disc_n = 0 # disco actual
69 self.var_copy_n = 0 # copia actual
69 self.var_copy_n = 0 # copia actual
70 self.var_burned_discs = 0 #numero de discos ya grabados
70 self.var_burned_discs = 0 #numero de discos ya grabados
71
71
72 self.bool_first_iso = False
72 self.bool_first_iso = False
73 self.var_step = 0 # numero de paso en el proceso
73 self.var_step = 0 # numero de paso en el proceso
74 self.bool_state_burning = False #si es True se puede grabar
74 self.bool_state_burning = False #si es True se puede grabar
75 self.blank_discs = False # Si es true significa que se acaban de ingresar discos en blanco
75 self.blank_discs = False # Si es true significa que se acaban de ingresar discos en blanco
76
77 self.bool_state_manual_check = False
76
78
77 self.var_list=[] # Lista de DOYs
79 self.var_list=[] # Lista de DOYs
78 self.var_sublist=[] # Sub-lista de DOYs seleccionados
80 self.var_sublist=[] # Sub-lista de DOYs seleccionados
79 self.var_devices=[] #Lista de dispositivos seleccionados
81 self.var_devices=[] #Lista de dispositivos seleccionados
80
82
81 #Revisa si existe el archivo de confirguracion y lo carga
83 #Revisa si existe el archivo de confirguracion y lo carga
82 if os.path.isfile("parameters.conf"):
84 if os.path.isfile("parameters.conf"):
83 functions2.get_parameters_conf(self)
85 functions2.get_parameters_conf(self)
84 self.bool_first_iso = True
86 self.bool_first_iso = True
85 self.txtInfo.append("Parameters were loaded from configuration file")
87 self.txtInfo.append("Parameters were loaded from configuration file")
86 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
88 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
87
89
88 elif self.var_real_principal == False:
90 elif self.var_real_principal == False:
89 functions2.set_parameters_test(self) #Establece ciertos parametros, para pruebas
91 functions2.set_parameters_test(self) #Establece ciertos parametros, para pruebas
90
92
91 functions2.set_vars(self) #Carga las variables de la clase con los parametros seleccionados
93 functions2.set_vars(self) #Carga las variables de la clase con los parametros seleccionados
92
94
93 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
95 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
94 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
96 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
95 functions.load_days(self)
97 functions.load_days(self)
96
98
97 if os.path.isfile("parameters.conf"):
99 if os.path.isfile("parameters.conf"):
98 functions2.enabled_items1(True, self) #Se bloquean los parametros de configuracion
100 functions2.enabled_items1(True, self) #Se bloquean los parametros de configuracion
101 self.txtTDpath.setEnabled(False)
102 self.btnTDpath.setEnabled(False)
99
103
100 if os.path.isfile("burning.conf"):
104 if os.path.isfile("burning.conf"):
101 functions2.get_burning_conf(self)
105 functions2.get_burning_conf(self)
102 self.txtInfo.append("Current disc: "+str(self.var_disc_n))
106 self.txtInfo.append("Current disc: "+str(self.var_disc_n))
103 self.txtInfo.append("Current copy: "+str(self.var_copy_n))
107 self.txtInfo.append("Current copy: "+str(self.var_copy_n))
104 self.txtInfo.append("Burned discs: "+str(self.var_burned_discs))
108 self.txtInfo.append("Burned discs: "+str(self.var_burned_discs))
105 self.btnStartburn.setText("Continue")
109 self.btnStartburn.setText("Continue")
106 self.actionChange_Parameters.setEnabled(False)
110 self.actionChange_Parameters.setEnabled(False)
107
111
108 self.connect(self.actionChange_Parameters, QtCore.SIGNAL("triggered()"), self.changeParameters)
112 self.connect(self.actionChange_Parameters, QtCore.SIGNAL("triggered()"), self.changeParameters)
109 self.connect(self.actionAbout, QtCore.SIGNAL("triggered()"), self.about)
113 self.connect(self.actionAbout, QtCore.SIGNAL("triggered()"), self.about)
110
114
111 self.process_iso = QtCore.QProcess()
115 self.process_iso = QtCore.QProcess()
112 self.connect(self.process_iso, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_iso)
116 self.connect(self.process_iso, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_iso)
113 self.connect(self.process_iso, QtCore.SIGNAL('readyReadStandardError()'), self.readError_iso)
117 self.connect(self.process_iso, QtCore.SIGNAL('readyReadStandardError()'), self.readError_iso)
114 self.connect(self.process_iso, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_iso)
118 self.connect(self.process_iso, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_iso)
115
119
116 self.process_burn = QtCore.QProcess()
120 self.process_burn = QtCore.QProcess()
117 self.connect(self.process_burn, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_burn)
121 self.connect(self.process_burn, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_burn)
118 self.connect(self.process_burn, QtCore.SIGNAL('readyReadStandardError()'), self.readError_burn)
122 self.connect(self.process_burn, QtCore.SIGNAL('readyReadStandardError()'), self.readError_burn)
119 self.connect(self.process_burn, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_burn)
123 self.connect(self.process_burn, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_burn)
120
124
121 self.process_check = QtCore.QProcess()
125 self.process_check = QtCore.QProcess()
122 self.connect(self.process_check, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_check)
126 self.connect(self.process_check, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_check)
123 self.connect(self.process_check, QtCore.SIGNAL('readyReadStandardError()'), self.readError_check)
127 self.connect(self.process_check, QtCore.SIGNAL('readyReadStandardError()'), self.readError_check)
124 self.connect(self.process_check, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_check)
128 self.connect(self.process_check, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_check)
125
129
126 self.process_manual_check = QtCore.QProcess()
130 self.process_manual_check = QtCore.QProcess()
127 self.connect(self.process_manual_check, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_manual_check)
131 self.connect(self.process_manual_check, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_manual_check)
128 self.connect(self.process_manual_check, QtCore.SIGNAL('readyReadStandardError()'), self.readError_manual_check)
132 self.connect(self.process_manual_check, QtCore.SIGNAL('readyReadStandardError()'), self.readError_manual_check)
129 self.connect(self.process_manual_check, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_manual_check)
133 self.connect(self.process_manual_check, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_manual_check)
130
134
131 def changeParameters(self):
135 def changeParameters(self):
132 dlg=QtGui.QDialog()
136 dlg=QtGui.QDialog()
133 dlgui=Ui_Parameters()
137 dlgui=Ui_Parameters()
134 dlgui.setupUi(dlg)
138 dlgui.setupUi(dlg)
135 if (dlg.exec_() == QtGui.QDialog.Accepted):
139 if (dlg.exec_() == QtGui.QDialog.Accepted):
136 if dlgui.txtDisc.value() > self.var_Discs or dlgui.txtCopy.value() > dlgui.txtNcopys.value():
140 if dlgui.txtDisc.value() > self.var_Discs or dlgui.txtCopy.value() > dlgui.txtNcopys.value():
137 self.txtInfo.append("Wrong parameters")
141 self.txtInfo.append("Wrong parameters")
138 else:
142 else:
139 self.var_Copys = dlgui.txtNcopys.value()
143 self.var_Copys = dlgui.txtNcopys.value()
140 self.var_disc_n = dlgui.txtDisc.value()
144 self.var_disc_n = dlgui.txtDisc.value()
141 self.var_copy_n = dlgui.txtCopy.value()
145 self.var_copy_n = dlgui.txtCopy.value()
142 self.txtInfo.append("Changed parameters")
146 self.txtInfo.append("Changed parameters")
143 self.var_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n -1 )
147 self.var_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n -1 )
144 self.bool_first_iso = True
148 self.bool_first_iso = True
145 self.txtInfo.append("Current disc: "+str(self.var_disc_n))
149 self.txtInfo.append("Current disc: "+str(self.var_disc_n))
146 self.txtInfo.append("Current copy: "+str(self.var_copy_n))
150 self.txtInfo.append("Current copy: "+str(self.var_copy_n))
147 self.txtInfo.append("Nro Copys: "+str(self.var_Copys))
151 self.txtInfo.append("Nro Copys: "+str(self.var_Copys))
148 functions2.make_parameters_conf(self)
152 functions2.make_parameters_conf(self)
149 self.txtCopys.setValue(self.var_Copys) #Actualizo mananualmente el valor Copys
153 self.txtCopys.setValue(self.var_Copys) #Actualizo mananualmente el valor Copys
150
154
151
155
152
156
153 def about(self):
157 def about(self):
154 dlg_about=QtGui.QDialog()
158 dlg_about=QtGui.QDialog()
155 dlgui_about=Ui_About()
159 dlgui_about=Ui_About()
156 dlgui_about.setupUi(dlg_about)
160 dlgui_about.setupUi(dlg_about)
157 dlg_about.exec_()
161 dlg_about.exec_()
158
162
159
163
160 #==============================================================================
164 #==============================================================================
161 # Manejo de los eventos
165 # Manejo de los eventos
162 #==============================================================================
166 #==============================================================================
163
167
164 #----------------------------------------------------- Obtencion de la ruta de los datos ---------------------------------------------------------------
168 #----------------------------------------------------- Obtencion de la ruta de los datos ---------------------------------------------------------------
165
169
166 @pyqtSignature("")
170 @pyqtSignature("")
167 def on_btnDpath_clicked(self):
171 def on_btnDpath_clicked(self):
168 """
172 """
169 Permite seleccionar graficamente el direcorio de los datos a grabar
173 Permite seleccionar graficamente el direcorio de los datos a grabar
170 """
174 """
171 self.var_Dpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
175 self.var_Dpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
172 self.txtDpath.setText(self.var_Dpath)
176 self.txtDpath.setText(self.var_Dpath)
173 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
177 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
174 functions.load_days(self)
178 functions.load_days(self)
175
179
176
180
177 @pyqtSignature("")
181 @pyqtSignature("")
178 def on_txtDpath_editingFinished(self):
182 def on_txtDpath_editingFinished(self):
179 """
183 """
180 Carga la ruta editada y verifica que sea correcta y carga la lista de dias
184 Carga la ruta editada y verifica que sea correcta y carga la lista de dias
181 """
185 """
182 self.var_Dpath=str(self.txtDpath.text()) #Se carga la variable con la ruta recien editada
186 self.var_Dpath=str(self.txtDpath.text()) #Se carga la variable con la ruta recien editada
183 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
187 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
184 functions.load_days(self)
188 functions.load_days(self)
185
189
186
190
187 #----------------------------------------------------- Obtencion de las ruta del proyecto ---------------------------------------------------------------
191 #----------------------------------------------------- Obtencion de las ruta del proyecto ---------------------------------------------------------------
188
192
189 @pyqtSignature("")
193 @pyqtSignature("")
190 def on_btnRpath_clicked(self):
194 def on_btnRpath_clicked(self):
191 """
195 """
192 Permite seleccionar graficamente el direcorio del proyecto
196 Permite seleccionar graficamente el direcorio del proyecto
193 """
197 """
194 self.var_Rpath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
198 self.var_Rpath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
195 self.txtRpath.setText(self.var_Rpath)
199 self.txtRpath.setText(self.var_Rpath)
196 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
200 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
197
201
198
202
199 @pyqtSignature("")
203 @pyqtSignature("")
200 def on_txtRpath_editingFinished(self):
204 def on_txtRpath_editingFinished(self):
201 """
205 """
202 Valida la ruta del proyecto
206 Valida la ruta del proyecto
203 """
207 """
204 self.var_Rpath = str(self.txtRpath.text()) #Se carga la variable con la ruta recien editada
208 self.var_Rpath = str(self.txtRpath.text()) #Se carga la variable con la ruta recien editada
205 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
209 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
206
210
207
211
208 #----------------------------------------------------- Tipo de datos ---------------------------------------------------------------
212 #----------------------------------------------------- Tipo de datos ---------------------------------------------------------------
209
213
210 @pyqtSignature("int")
214 @pyqtSignature("int")
211 def on_lstDtype_activated(self, index):
215 def on_lstDtype_activated(self, index):
212 """
216 """
213 Permite elegir entre los tipos de archivos
217 Permite elegir entre los tipos de archivos
214 """
218 """
215 self.txtDtype.setReadOnly(True)
219 self.txtDtype.setReadOnly(True)
216 if index == 0:
220 if index == 0:
217 self.var_Dtype ='r'
221 self.var_Dtype ='r'
218 elif index == 1:
222 elif index == 1:
219 self.var_Dtype ='pdata'
223 self.var_Dtype ='pdata'
220 elif index == 2:
224 elif index == 2:
221 self.var_Dtype ='sswma'
225 self.var_Dtype ='sswma'
222 else :
226 else :
223 self.var_Dtype =''
227 self.var_Dtype =''
224 self.txtDtype.setReadOnly(False)
228 self.txtDtype.setReadOnly(False)
225
229
226 self.txtDtype.setText(self.var_Dtype)
230 self.txtDtype.setText(self.var_Dtype)
227 functions.load_days(self) #llamada a funcion
231 functions.load_days(self) #llamada a funcion
228
232
229 @pyqtSignature("")
233 @pyqtSignature("")
230 def on_txtDtype_editingFinished(self):
234 def on_txtDtype_editingFinished(self):
231 self.var_Dtype=str(self.txtDtype.text())
235 self.var_Dtype=str(self.txtDtype.text())
232 functions.load_days(self) #llamada a funcion
236 functions.load_days(self) #llamada a funcion
233
237
234
238
235 #----------------------------------------------------- Etiqueta ---------------------------------------------------------------
239 #----------------------------------------------------- Etiqueta ---------------------------------------------------------------
236
240
237 @pyqtSignature("")
241 @pyqtSignature("")
238 def on_txtElabel_editingFinished(self):
242 def on_txtElabel_editingFinished(self):
239 self.var_Elabel = str(self.txtElabel.text())
243 self.var_Elabel = str(self.txtElabel.text())
240
244
241 #----------------------------------------------------- Numero de copias ---------------------------------------------------------------
245 #----------------------------------------------------- Numero de copias ---------------------------------------------------------------
242 @pyqtSignature("")
246 @pyqtSignature("")
243 def on_txtCopys_editingFinished(self):
247 def on_txtCopys_editingFinished(self):
244 self.var_Copys = self.txtCopys.value()
248 self.var_Copys = self.txtCopys.value()
245
249
246 #----------------------------------------------------- Seleccion del rango de fechas ---------------------------------------------------------------
250 #----------------------------------------------------- Seleccion del rango de fechas ---------------------------------------------------------------
247
251
248 @pyqtSignature("int") #CLOSED
252 @pyqtSignature("int") #CLOSED
249 def on_lstStartDay_activated(self, index):
253 def on_lstStartDay_activated(self, index):
250 """
254 """
251 Cambia la lista de opciones en lstStopDay
255 Cambia la lista de opciones en lstStopDay
252 """
256 """
253 var_StopDay_index=self.lstStopDay.count() - self.lstStopDay.currentIndex()
257 var_StopDay_index=self.lstStopDay.count() - self.lstStopDay.currentIndex()
254 self.lstStopDay.clear()
258 self.lstStopDay.clear()
255
259
256 for i in self.var_list[index:]:
260 for i in self.var_list[index:]:
257 self.lstStopDay.addItem(i)
261 self.lstStopDay.addItem(i)
258
262
259 self.lstStopDay.setCurrentIndex(self.lstStopDay.count() - var_StopDay_index)
263 self.lstStopDay.setCurrentIndex(self.lstStopDay.count() - var_StopDay_index)
260
264
261 functions.get_sub_list(self)
265 functions.get_sub_list(self)
262
266
263
267
264 @pyqtSignature("int") #CLOSED
268 @pyqtSignature("int") #CLOSED
265 def on_lstStopDay_activated(self, index):
269 def on_lstStopDay_activated(self, index):
266 """
270 """
267 Cambia la lista de opciones en lstStartDay
271 Cambia la lista de opciones en lstStartDay
268 """
272 """
269 var_StartDay_index=self.lstStartDay.currentIndex()
273 var_StartDay_index=self.lstStartDay.currentIndex()
270 var_end_index = self.lstStopDay.count() - index
274 var_end_index = self.lstStopDay.count() - index
271 self.lstStartDay.clear()
275 self.lstStartDay.clear()
272
276
273 for i in self.var_list[:len(self.var_list) - var_end_index + 1]:
277 for i in self.var_list[:len(self.var_list) - var_end_index + 1]:
274 self.lstStartDay.addItem(i)
278 self.lstStartDay.addItem(i)
275
279
276 self.lstStartDay.setCurrentIndex(var_StartDay_index)
280 self.lstStartDay.setCurrentIndex(var_StartDay_index)
277
281
278 functions.get_sub_list(self)
282 functions.get_sub_list(self)
279
283
280
284
281 #----------------------------------------------------- Capacidad del dispositivo de grabacion ---------------------------------------------------------------
285 #----------------------------------------------------- Capacidad del dispositivo de grabacion ---------------------------------------------------------------
282
286
283 @pyqtSignature("")
287 @pyqtSignature("")
284 def on_txtDcapacity_editingFinished(self):
288 def on_txtDcapacity_editingFinished(self):
285 self.var_Dcapacity = self.txtDcapacity.value()
289 self.var_Dcapacity = self.txtDcapacity.value()
286
290
287
291
288 @pyqtSignature("int") #CLOSED
292 @pyqtSignature("int") #CLOSED
289 def on_lstDcapacity_activated(self, index):
293 def on_lstDcapacity_activated(self, index):
290 """
294 """
291 Permite elegir el tamaΓ±o del disco
295 Permite elegir el tamaΓ±o del disco
292 """
296 """
293 if index == 0:
297 if index == 0:
294 var_size=25.0
298 var_size=25.0
295 elif index == 1:
299 elif index == 1:
296 var_size=8.5
300 var_size=8.5
297 elif index == 2:
301 elif index == 2:
298 var_size=4.7
302 var_size=4.7
299 elif index == 3:
303 elif index == 3:
300 var_size=0.7
304 var_size=0.7
301
305
302 if index != 4:
306 if index != 4:
303 self.txtDcapacity.setValue(var_size*10**9/1024**2)
307 self.txtDcapacity.setValue(var_size*10**9/1024**2)
304 self.txtDcapacity.setReadOnly(True)
308 self.txtDcapacity.setReadOnly(True)
305 else:
309 else:
306 self.txtDcapacity.setValue(100.0)
310 self.txtDcapacity.setValue(100.0)
307 self.txtDcapacity.setReadOnly(False)
311 self.txtDcapacity.setReadOnly(False)
308
312
309 self.var_lstDcapacity = self.lstDcapacity.currentIndex()
313 self.var_lstDcapacity = self.lstDcapacity.currentIndex()
310 self.var_Dcapacity = self.txtDcapacity.value()
314 self.var_Dcapacity = self.txtDcapacity.value()
311
315
312 #----------------------------------------------------- Testeo de las unidades de grabacion ---------------------------------------------------------------
316 #----------------------------------------------------- Testeo de las unidades de grabacion ---------------------------------------------------------------
313
317
314 @pyqtSignature("")
318 @pyqtSignature("")
315 def on_btnTdevA_clicked(self):
319 def on_btnTdevA_clicked(self):
316 var_dev = str(self.txtDeviceA.text())
320 var_dev = str(self.txtDeviceA.text())
317 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
321 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
318 commands.getstatusoutput(var_cmd)
322 commands.getstatusoutput(var_cmd)
319
323
320 @pyqtSignature("")
324 @pyqtSignature("")
321 def on_btnTdevB_clicked(self):
325 def on_btnTdevB_clicked(self):
322 var_dev = str(self.txtDeviceB.text())
326 var_dev = str(self.txtDeviceB.text())
323 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
327 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
324 commands.getstatusoutput(var_cmd)
328 commands.getstatusoutput(var_cmd)
325
329
326 @pyqtSignature("")
330 @pyqtSignature("")
327 def on_btnTdevC_clicked(self):
331 def on_btnTdevC_clicked(self):
328 var_dev = str(self.txtDeviceC.text())
332 var_dev = str(self.txtDeviceC.text())
329 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
333 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
330 commands.getstatusoutput(var_cmd)
334 commands.getstatusoutput(var_cmd)
331
335
332 @pyqtSignature("")
336 @pyqtSignature("")
333 def on_btnTdevD_clicked(self):
337 def on_btnTdevD_clicked(self):
334 var_dev = str(self.txtDeviceD.text())
338 var_dev = str(self.txtDeviceD.text())
335 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
339 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
336 commands.getstatusoutput(var_cmd)
340 commands.getstatusoutput(var_cmd)
337
341
338
342
339 #==============================================================================
343 #==============================================================================
340 # Botones para la generacion de los archivos de configuracion
344 # Botones para la generacion de los archivos de configuracion
341 #==============================================================================
345 #==============================================================================
342
346
343 #----------------------------------------------------- Generacion de la configuracion usando los parametros ---------------------------------------------------------------
347 #----------------------------------------------------- Generacion de la configuracion usando los parametros ---------------------------------------------------------------
344
348
345 @pyqtSignature("")
349 @pyqtSignature("")
346 def on_btnGbkp_clicked(self):
350 def on_btnGbkp_clicked(self):
347 """
351 """
348 Generacion de archivos de configuracion usando los parametros
352 Generacion de archivos de configuracion usando los parametros
349 """
353 """
350
354
351 if self.bool_state_manual_check == True:
355 if self.bool_state_manual_check == True:
352 self.txtInfo.append("First stop the manual check process")
356 self.txtInfo.append("First stop the manual check process")
353 return
357 return
354
358
355
359
356 if functions.validate_parameters(self) == False:
360 if functions.validate_parameters(self) == False:
357 return
361 return
358
362
359 #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente
363 #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente
360 list_dirs=['gpath','iso','ppath', 'tmpdata']
364 list_dirs=['gpath','iso','ppath', 'tmpdata']
361 bool_make_dirs = functions.make_dirs(list_dirs, self)
365 bool_make_dirs = functions.make_dirs(list_dirs, self)
362 if bool_make_dirs == False:
366 if bool_make_dirs == False:
363 return
367 return
364
368
365 var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar
369 var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar
366
370
367 self.var_Discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
371 self.var_Discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
368
372
369 functions.make_files_print(self) # Se crean los archivos .print
373 functions.make_files_print(self) # Se crean los archivos .print
370
374
371 functions2.make_parameters_conf(self) # se crea el archivo parameters.conf
375 functions2.make_parameters_conf(self) # se crea el archivo parameters.conf
372
376
373 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
377 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
374
378
375 #Se bloquean los parametros de configuracion
379 #Se bloquean los parametros de configuracion
376 functions2.enabled_items1(True, self)
380 functions2.enabled_items1(True, self)
377 self.var_disc_n = 1
381 self.var_disc_n = 1
378 self.var_copy_n = 1
382 self.var_copy_n = 1
379 self.bool_first_iso = True
383 self.bool_first_iso = True
380 self.var_burned_discs = 0 #numero de discos grabados
384 self.var_burned_discs = 0 #numero de discos grabados
381
385
382
386
383 #----------------------------------------------------- Permite reiniciar la configuracion ---------------------------------------------------------------
387 #----------------------------------------------------- Permite reiniciar la configuracion ---------------------------------------------------------------
384
388
385 @pyqtSignature("")
389 @pyqtSignature("")
386 def on_btnRestart_clicked(self):
390 def on_btnRestart_clicked(self):
387 """
391 """
388 Permite que se puedan cambiar los parametros
392 Permite que se puedan cambiar los parametros
389 """
393 """
390 if os.path.isfile("parameters.conf"):
394 if os.path.isfile("parameters.conf"):
391 os.remove("parameters.conf")
395 os.remove("parameters.conf")
392 if os.path.isfile("burning.conf"):
396 if os.path.isfile("burning.conf"):
393 os.remove("burning.conf")
397 os.remove("burning.conf")
394
398
395 functions2.enabled_items1(False, self)
399 functions2.enabled_items1(False, self)
396 self.btnStartburn.setText("Start Burn")
400 self.btnStartburn.setText("Start Burn")
397 self.txtInfo.clear()
401 self.txtInfo.clear()
398
402
399
403
400
404
401 #==============================================================================
405 #==============================================================================
402 # Acciones de los procesos
406 # Acciones de los procesos
403 #==============================================================================
407 #==============================================================================
404
408
405 #------------------------------------------------ Funciones del proceso de creacion del iso ------------------------------------------------------
409 #------------------------------------------------ Funciones del proceso de creacion del iso ------------------------------------------------------
406
410
407 def readOuput_iso(self):
411 def readOuput_iso(self):
408 self.txtProgress.setText("stdout iso: " + QtCore.QString(self.process_iso.readAllStandardOutput()))
412 self.txtProgress.setText("stdout iso: " + QtCore.QString(self.process_iso.readAllStandardOutput()))
409
413
410 def readError_iso(self):
414 def readError_iso(self):
411 self.txtProgress.setText("stderr iso: " + QtCore.QString(self.process_iso.readAllStandardError()))
415 self.txtProgress.setText("stderr iso: " + QtCore.QString(self.process_iso.readAllStandardError()))
412
416
413 def finished_iso(self):
417 def finished_iso(self):
414 self.txtProgress.clear()
418 self.txtProgress.clear()
415
419
416 if not(self.bool_state_burning):
420 if not(self.bool_state_burning):
417 return
421 return
418
422
419 if self.process_iso.exitCode() == 0:
423 if self.process_iso.exitCode() == 0:
420 self.txtInfo.append("------Iso file: "+functions.i2s(self.var_disc_n)+" created successfully\n")
424 self.txtInfo.append("------Iso file: "+functions.i2s(self.var_disc_n)+" created successfully\n")
421 self.var_step = 1
425 self.var_step = 1
422 self.function_burn()
426 self.function_burn()
423
427
424 else:
428 else:
425 self.txtInfo.append("#####Error creating iso file "+functions.i2s(self.var_disc_n)
429 self.txtInfo.append("#####Error creating iso file "+functions.i2s(self.var_disc_n)
426 +" , code "+QtCore.QString(self.process_iso.exitCode()))
430 +" , code "+QtCore.QString(self.process_iso.exitCode()))
427 self.txtInfo.append("Please check the data")
431 self.txtInfo.append("Please check the data")
428 self.txtInfo.append("FATAL ERROR")
432 self.txtInfo.append("FATAL ERROR")
429
433
430 #----------------------------------------------------- Funciones del proceso de grabado ---------------------------------------------------------------
434 #----------------------------------------------------- Funciones del proceso de grabado ---------------------------------------------------------------
431
435
432 def readOuput_burn(self):
436 def readOuput_burn(self):
433 self.txtProgress.setText("stdout burn: " + QtCore.QString(self.process_burn.readAllStandardOutput()))
437 self.txtProgress.setText("stdout burn: " + QtCore.QString(self.process_burn.readAllStandardOutput()))
434
438
435 def readError_burn(self):
439 def readError_burn(self):
436 self.txtProgress.setText("stderr burn: " + QtCore.QString(self.process_burn.readAllStandardError()))
440 self.txtProgress.setText("stderr burn: " + QtCore.QString(self.process_burn.readAllStandardError()))
437
441
438 def finished_burn(self):
442 def finished_burn(self):
439 self.txtProgress.clear()
443 self.txtProgress.clear()
440
444
441 #Si se paro el proceso manualmente se termina
445 #Si se paro el proceso manualmente se termina
442 if not(self.bool_state_burning):
446 if not(self.bool_state_burning):
443 return
447 return
444
448
445 if self.process_burn.exitCode() == 0:
449 if self.process_burn.exitCode() == 0:
446 self.txtInfo.append("-----Complete recording, disc: "+str(self.var_disc_n)+" copy: "+str(self.var_copy_n))
450 self.txtInfo.append("-----Complete recording, disc: "+str(self.var_disc_n)+" copy: "+str(self.var_copy_n))
447 functions2.update_message(1, "COMPLETED", self)
451 functions2.update_message(1, "COMPLETED", self)
448 self.var_step = 2
452 self.var_step = 2
449 self.function_check()
453 self.function_check()
450
454
451 else:
455 else:
452 self.txtInfo.append("#######Error recording, disc: "+functions.i2s(self.var_disc_n)+" copy: "
456 self.txtInfo.append("#######Error recording, disc: "+functions.i2s(self.var_disc_n)+" copy: "
453 +functions.i2s(self.var_copy_n)+", code "+QtCore.QString(self.process_burn.exitCode()))
457 +functions.i2s(self.var_copy_n)+", code "+QtCore.QString(self.process_burn.exitCode()))
454 functions2.update_message(1, "ERROR", self)
458 functions2.update_message(1, "ERROR", self)
455
459
456 functions.is_last_disc_and_copy(self)
460 functions.is_last_disc_and_copy(self)
457
461
458
462
459 #----------------------------------------------------- Funciones del proceso de verificacion ---------------------------------------------------------------
463 #----------------------------------------------------- Funciones del proceso de verificacion ---------------------------------------------------------------
460
464
461 def readOuput_check(self):
465 def readOuput_check(self):
462 self.txtProgress.setText("stdout check: " + QtCore.QString(self.process_check.readAllStandardOutput()))
466 self.txtProgress.setText("stdout check: " + QtCore.QString(self.process_check.readAllStandardOutput()))
463
467
464 def readError_check(self):
468 def readError_check(self):
465 self.txtProgress.setText("stderr check: " + QtCore.QString(self.process_check.readAllStandardError()))
469 self.txtProgress.setText("stderr check: " + QtCore.QString(self.process_check.readAllStandardError()))
466
470
467 def finished_check(self):
471 def finished_check(self):
468 self.txtProgress.clear()
472 self.txtProgress.clear()
469
473
470 if not(self.bool_state_burning):
474 if not(self.bool_state_burning):
471 return
475 return
472
476
473 if self.process_check.exitCode() == 0:
477 if self.process_check.exitCode() == 0:
474 self.txtInfo.append("--------Complete checking, disc: "+str(self.var_disc_n)+" copy: "+str(self.var_copy_n))
478 self.txtInfo.append("--------Complete checking, disc: "+str(self.var_disc_n)+" copy: "+str(self.var_copy_n))
475 functions2.update_message(2, "CHECKED", self)
479 functions2.update_message(2, "CHECKED", self)
476
480
477 else:
481 else:
478 self.txtInfo.append("#######Error checking, disc: "+functions.i2s(self.var_disc_n)+" copy: "
482 self.txtInfo.append("#######Error checking, disc: "+functions.i2s(self.var_disc_n)+" copy: "
479 +functions.i2s(self.var_copy_n)+", code "+QtCore.QString(self.process_check.exitCode()))
483 +functions.i2s(self.var_copy_n)+", code "+QtCore.QString(self.process_check.exitCode()))
480 functions2.update_message(2, "ERROR", self)
484 functions2.update_message(2, "ERROR", self)
481
485
482 #borrar el contenido de tmpdata
486 #borrar el contenido de tmpdata
483 var_tmpdata=self.var_Rpath+"/tmpdata"
487 var_tmpdata=self.var_Rpath+"/tmpdata"
484
488
485 bool_return = functions.remove_dir(var_tmpdata, self)
489 bool_return = functions.remove_dir(var_tmpdata, self)
486 if not(bool_return):
490 if not(bool_return):
487 self.txtInfo.append("Error deleting directory: "+var_tmpdata)
491 self.txtInfo.append("Error deleting directory: "+var_tmpdata)
488 self.bool_state_burning = False
492 self.bool_state_burning = False
489 return
493 return
490
494
491 bool_return = functions.make_dir(var_tmpdata, self)
495 bool_return = functions.make_dir(var_tmpdata, self)
492 if not(bool_return):
496 if not(bool_return):
493 self.txtInfo.append("Error creating directory:"+ var_tmpdata)
497 self.txtInfo.append("Error creating directory:"+ var_tmpdata)
494 self.bool_state_burning = False
498 self.bool_state_burning = False
495 return
499 return
496
500
497 functions.is_last_disc_and_copy(self)
501 functions.is_last_disc_and_copy(self)
498
502
499 #----------------------------------------------------- Funciones del proceso de verificacion manual ---------------------------------------------------------------
503 #----------------------------------------------------- Funciones del proceso de verificacion manual ---------------------------------------------------------------
500
504
501 def readOuput_manual_check(self):
505 def readOuput_manual_check(self):
502 self.txtProgress.setText("stdout check: " + QtCore.QString(self.process_manual_check.readAllStandardOutput()))
506 self.txtProgress.setText("stdout check: " + QtCore.QString(self.process_manual_check.readAllStandardOutput()))
503
507
504 def readError_manual_check(self):
508 def readError_manual_check(self):
505 self.txtProgress.setText("stderr check: " + QtCore.QString(self.process_manual_check.readAllStandardError()))
509 self.txtProgress.setText("stderr check: " + QtCore.QString(self.process_manual_check.readAllStandardError()))
506
510
507 def finished_manual_check(self):
511 def finished_manual_check(self):
508 self.txtProgress.clear()
512 self.txtProgress.clear()
509
513
510 if not(self.bool_state_manual_check):
514 if not(self.bool_state_manual_check):
511 return
515 return
512
516
513 if self.process_manual_check.exitCode() == 0:
517 if self.process_manual_check.exitCode() == 0:
514 self.txtInfo.append("--------Complete checking, disc: "+str(self.var_n_check_dirs + 1))
518 self.txtInfo.append("--------Complete checking, disc: "+str(self.var_n_check_dirs + 1))
515 functions2.update_message(2, "CHECKED", self, index=self.var_n_check_dirs)
519 functions2.update_message(2, "CHECKED", self, index=self.var_n_check_dirs)
516
520
517 else:
521 else:
518 self.txtInfo.append("#######Error checking, disc: "+str(self.var_n_check_dirs + 1)
522 self.txtInfo.append("#######Error checking, disc: "+str(self.var_n_check_dirs + 1)
519 +", code "+QtCore.QString(self.process_manual_check.exitCode()))
523 +", code "+QtCore.QString(self.process_manual_check.exitCode()))
520 functions2.update_message(2, "ERROR", self, index=self.var_n_check_dirs)
524 functions2.update_message(2, "ERROR", self, index=self.var_n_check_dirs)
521
525
522 #borrar el contenido de tmpdata
526 #borrar el contenido de tmpdata
523 var_tmpdata=self.var_TDpath+"/tmpdata"
527 var_tmpdata=self.var_TDpath+"/tmpdata"
524
528
525 bool_return = functions.remove_dir(var_tmpdata, self)
529 bool_return = functions.remove_dir(var_tmpdata, self)
526 if not(bool_return):
530 if not(bool_return):
527 self.txtInfo.append("Error deleting directory: "+var_tmpdata)
531 self.txtInfo.append("Error deleting directory: "+var_tmpdata)
528 self.bool_state_manual_check = False
532 self.bool_state_manual_check = False
529 return
533 return
530
534
531 self.var_n_check_dirs +=1
535 self.var_n_check_dirs +=1
532
536
533 if self.var_n_check_dirs >= len(self.list_check_dirs) :
537 if self.var_n_check_dirs >= len(self.list_check_dirs) :
534 self.bool_state_manual_check = False
538 self.bool_state_manual_check = False
535 self.function_manual_check_final()
539 self.function_manual_check_final()
536 return
540 return
537
541
538 self.function_manual_check()
542 self.function_manual_check()
539
543
540
544
541 #==============================================================================
545 #==============================================================================
542 # Botones para el proceso de grabacion
546 # Botones para el proceso de grabacion
543 #==============================================================================
547 #==============================================================================
544
548
545 #----------------------------------------------------- Iniciar proceso de grabacion ---------------------------------------------------------------
549 #----------------------------------------------------- Iniciar proceso de grabacion ---------------------------------------------------------------
546
550
547 @pyqtSignature("")
551 @pyqtSignature("")
548 def on_btnStartburn_clicked(self):
552 def on_btnStartburn_clicked(self):
549 """
553 """
550 Se inicia el proceso de grabacion
554 Se inicia el proceso de grabacion
551 """
555 """
552 #Verifica que exista algun dispositivo de grabacion seleccionado
556 #Verifica que exista algun dispositivo de grabacion seleccionado
553 if not(functions2.selected_devices(self)):
557 if not(functions2.selected_devices(self)):
554 self.txtInfo.append("There is no recording device selected")
558 self.txtInfo.append("There is no recording device selected")
555 return
559 return
556
560
557 # #Lista los dispositivos de grabacion a usar
561 # #Lista los dispositivos de grabacion a usar
558 # for dev in self.var_devices:
562 # for dev in self.var_devices:
559 # self.txtInfo.append("recording device :"+dev)
563 # self.txtInfo.append("recording device :"+dev)
560
564
561 self.bool_state_burning = True
565 self.bool_state_burning = True
562 functions2.enabled_items2(True, self)
566 functions2.enabled_items2(True, self)
563
567
564 if self.bool_first_iso == True:
568 if self.bool_first_iso == True:
565 self.txtInfo.append("BUTTON: on_btnStartburn_clicked")
569 self.txtInfo.append("BUTTON: on_btnStartburn_clicked")
566 self.var_step = 4
570 self.var_step = 4
567 self.function_eject()
571 self.function_eject()
568 return
572 return
569
573
570 if self.var_step == 0:
574 if self.var_step == 0:
571 self.function_iso()
575 self.function_iso()
572 return
576 return
573
577
574 if self.var_step == 1:
578 if self.var_step == 1:
575 self.function_burn()
579 self.function_burn()
576 return
580 return
577
581
578 #----------------------------------------------------- Funcion para el grabado ---------------------------------------------------------------
582 #----------------------------------------------------- Funcion para el grabado ---------------------------------------------------------------
579
583
580 def function_iso(self):
584 def function_iso(self):
581 #Creacion del archivo.iso para la grabacion
585 #Creacion del archivo.iso para la grabacion
582 if self.var_step == 0:
586 if self.var_step == 0:
583 self.txtInfo.append("########## Disc number: "+str(self.var_disc_n)+"##########")
587 self.txtInfo.append("########## Disc number: "+str(self.var_disc_n)+"##########")
584 self.txtInfo.append("------Creating iso file number: "+str(self.var_disc_n))
588 self.txtInfo.append("------Creating iso file number: "+str(self.var_disc_n))
585
589
586 var_cmd = functions.cmd_iso(self)
590 var_cmd = functions.cmd_iso(self)
587
591
588 if self.var_real_show_cmd == True:
592 if self.var_real_show_cmd == True:
589 self.txtInfo.append("CMD: "+var_cmd)
593 self.txtInfo.append("CMD: "+var_cmd)
590
594
591 if self.var_real_iso == False:
595 if self.var_real_iso == False:
592 self.txtInfo.append('**function_iso')
596 self.txtInfo.append('**function_iso')
593 var_cmd="echo 'function_iso'"
597 var_cmd="echo 'function_iso'"
594
598
595 self.process_iso.start(var_cmd)
599 self.process_iso.start(var_cmd)
596
600
597 def function_burn(self):
601 def function_burn(self):
598 #Grabacion de los DVDs
602 #Grabacion de los DVDs
599
603
600 if self.var_step == 1:
604 if self.var_step == 1:
601 self.txtInfo.append("------Recording disc: "+str(self.var_disc_n)+", copy:"+str(self.var_copy_n))
605 self.txtInfo.append("------Recording disc: "+str(self.var_disc_n)+", copy:"+str(self.var_copy_n))
602 functions2.update_message(1, "BURNING", self)
606 functions2.update_message(1, "BURNING", self)
603
607
604 var_cmd = functions.cmd_burn(self)
608 var_cmd = functions.cmd_burn(self)
605
609
606 if self.var_real_show_cmd == True:
610 if self.var_real_show_cmd == True:
607 self.txtInfo.append("CMD: "+var_cmd)
611 self.txtInfo.append("CMD: "+var_cmd)
608
612
609 if self.var_real_burn == False:
613 if self.var_real_burn == False:
610 self.txtInfo.append('**function_burn')
614 self.txtInfo.append('**function_burn')
611 var_cmd="echo 'function_burn'"
615 var_cmd="echo 'function_burn'"
612
616
613 self.process_burn.start(var_cmd)
617 self.process_burn.start(var_cmd)
614
618
615 def function_check(self):
619 def function_check(self):
616 #Verificacion de los discos
620 #Verificacion de los discos
617 if self.var_step == 2:
621 if self.var_step == 2:
618 self.txtInfo.append("-----------checking disc:"+str(self.var_disc_n)+", copy:"+str(self.var_copy_n))
622 self.txtInfo.append("-----------checking disc:"+str(self.var_disc_n)+", copy:"+str(self.var_copy_n))
619
623
620 functions2.eject_one_device(self)
624 functions2.eject_one_device(self)
621 functions2.eject_t_one_device(self)
625 functions2.eject_t_one_device(self)
622 self.txtInfo.append("Waiting ...")
626 self.txtInfo.append("Waiting ...")
623 time .sleep(20)
627 time .sleep(20)
624
628
625 functions2.update_message(2, "CHECKING", self)
629 functions2.update_message(2, "CHECKING", self)
626
630
627 dev_sr = functions2.get_dev_sr(self)
631 dev_sr = functions2.get_dev_sr(self)
628 var_cmd = functions.cmd_check(dev_sr, self)
632 var_cmd = functions.cmd_check(dev_sr, self)
629
633
630 if self.var_real_show_cmd == True:
634 if self.var_real_show_cmd == True:
631 self.txtInfo.append("CMD: "+var_cmd)
635 self.txtInfo.append("CMD: "+var_cmd)
632
636
633 if self.var_real_check == False:
637 if self.var_real_check == False:
634 self.txtInfo.append('**function_check')
638 self.txtInfo.append('**function_check')
635 var_cmd="echo 'function_check'"
639 var_cmd="echo 'function_check'"
636
640
637 self.process_check.start(var_cmd)
641 self.process_check.start(var_cmd)
638
642
639 #OK
643 #OK
640 def function_eject(self):
644 def function_eject(self):
641 self.txtInfo.append("Ejecting recording devices")
645 self.txtInfo.append("Ejecting recording devices")
642 self.txtInfo.append("Please insert blank discs")
646 self.txtInfo.append("Please insert blank discs")
643
647
644 if self.var_real_eject == True:
648 if self.var_real_eject == True:
645 functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
649 functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
646 else:
650 else:
647 self.txtInfo.append("**functions2.eject_devices")
651 self.txtInfo.append("**functions2.eject_devices")
648
652
649 self.btnStartburn.setText("Continue")
653 self.btnStartburn.setText("Continue")
650 self.btnStartburn.setEnabled(True)
654 self.btnStartburn.setEnabled(True)
651
655
652 if self.bool_first_iso == True:
656 if self.bool_first_iso == True:
653 self.bool_first_iso = False
657 self.bool_first_iso = False
654 self.var_step = 0
658 self.var_step = 0
655
659
656 elif self.var_copy_n == 1:
660 elif self.var_copy_n == 1:
657 self.var_step = 0
661 self.var_step = 0
658
662
659 else:
663 else:
660 self.var_step = 1
664 self.var_step = 1
661
665
662 def function_final(self):
666 def function_final(self):
663 self.txtInfo.append("Recording process is complete")
667 self.txtInfo.append("Recording process is complete")
664 if os.path.isfile("parameters.conf"):
668 if os.path.isfile("parameters.conf"):
665 os.remove("parameters.conf")
669 os.remove("parameters.conf")
666 if os.path.isfile("burning.conf"):
670 if os.path.isfile("burning.conf"):
667 os.remove("burning.conf")
671 os.remove("burning.conf")
668
672
673 self.btnGbkp.setEnabled(False)
674 self.btnRestart.setEnabled(True)
675 self.btnStartburn.setEnabled(False)
676 self.btnStopburn.setEnabled(False)
677
669 functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
678 functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
670
679
671
680
672
681
673
682
674 #----------------------------------------------------- Detener proceso de grabacion ---------------------------------------------------------------
683 #----------------------------------------------------- Detener proceso de grabacion ---------------------------------------------------------------
675
684
676 @pyqtSignature("")
685 @pyqtSignature("")
677 def on_btnStopburn_clicked(self):
686 def on_btnStopburn_clicked(self):
678 """
687 """
679 Slot documentation goes here.
688 Slot documentation goes here.
680 """
689 """
681 self.bool_state_burning = False
690 self.bool_state_burning = False
682
691
683 if self.var_step == 0:
692 if self.var_step == 0:
684 self.process_iso.terminate() #Termina el proceso, si puede
693 self.process_iso.terminate() #Termina el proceso, si puede
685 # self.process_iso.kill() #Mata el proceso, no es la forma adecuada, solo usar si terminate() no funciona
694 # self.process_iso.kill() #Mata el proceso, no es la forma adecuada, solo usar si terminate() no funciona
686 elif self.var_step == 1:
695 elif self.var_step == 1:
687 self.process_burn.terminate()
696 self.process_burn.terminate()
688 elif self.var_step == 2:
697 elif self.var_step == 2:
689 self.process_check.terminate()
698 self.process_check.terminate()
690
699
691 self.txtInfo.append("Stopped recording")
700 self.txtInfo.append("Stopped recording")
692 functions2.enabled_items2(False, self)
701 functions2.enabled_items2(False, self)
693 self.bool_first_iso = True
702 self.bool_first_iso = True
694
703
695
704
696
705
697 #==============================================================================
706 #==============================================================================
698 # Proceso verificacion manual
707 # Proceso verificacion manual
699 #==============================================================================
708 #==============================================================================
700
709
701
710
702 #----------------------------------------------------- Proceso de verificaion manual ---------------------------------------------------------------
711 #----------------------------------------------------- Proceso de verificaion manual ---------------------------------------------------------------
703
712
704
713
705 @pyqtSignature("")
714 @pyqtSignature("")
706 def on_btnTDpath_clicked(self):
715 def on_btnTDpath_clicked(self):
707 """
716 """
708 Slot documentation goes here.
717 Slot documentation goes here.
709 """
718 """
710 self.var_TDpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
719 self.var_TDpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
711 self.txtTDpath.setText(self.var_TDpath)
720 self.txtTDpath.setText(self.var_TDpath)
712 self.statusTDpath = functions.dir_exists(self.var_TDpath, self)
721 self.statusTDpath = functions.dir_exists(self.var_TDpath, self)
713 if self.statusTDpath:
722 if self.statusTDpath:
714 self.btnCHstart.setEnabled(True)
723 self.btnCHstart.setEnabled(True)
715
724
716
725
717 @pyqtSignature("")
726 @pyqtSignature("")
718 def on_btnCHstart_clicked(self):
727 def on_btnCHstart_clicked(self):
719 """
728 """
720 Slot documentation goes here.
729 Slot documentation goes here.
721 """
730 """
722
731
723 if self.btnCHstart.text() == "STOP":
732 if self.btnCHstart.text() == "STOP":
724 self.btnCHstart.setText("START") #Cambio el texto del boton
733 self.btnCHstart.setText("START") #Cambio el texto del boton
725 self.bool_state_manual_check = False
734 self.bool_state_manual_check = False
726 self.process_manual_check.terminate()
735 self.process_manual_check.terminate()
727
736
728 #borrar el contenido de tmpdata
737 #borrar el contenido de tmpdata
729 var_tmpdata=self.var_TDpath+"/tmpdata"
738 var_tmpdata=self.var_TDpath+"/tmpdata"
730 bool_return = functions.remove_dir(var_tmpdata, self)
739 bool_return = functions.remove_dir(var_tmpdata, self)
731 if not(bool_return):
740 if not(bool_return):
732 self.txtInfo.append("Error deleting directory: "+var_tmpdata)
741 self.txtInfo.append("Error deleting directory: "+var_tmpdata)
733
742
734 return
743 return
735
744
736
745
737 list_dirs = functions2.mounted_devices()
746 list_dirs = functions2.mounted_devices()
738 if list_dirs == "FATAL ERROR":
747 if list_dirs == "FATAL ERROR":
739 self.txtInfo.append("ERROR")
748 self.txtInfo.append("ERROR")
740 return
749 return
741
750
742 for i in list_dirs:
751 for i in list_dirs:
743 self.txtInfo.append(i)
752 self.txtInfo.append(i)
744
753
745 self.list_check_dirs = list_dirs #contiene los directorios donde estan montados los discos a verificar
754 self.list_check_dirs = list_dirs #contiene los directorios donde estan montados los discos a verificar
746 self.var_n_check_dirs = 0
755 self.var_n_check_dirs = 0
747 self.bool_state_manual_check = True
756 self.bool_state_manual_check = True
748
757
749 self.btnTDpath.setEnabled(False) #Deshabilito el boton que permite cambiar la ruta de verificacion
758 self.btnTDpath.setEnabled(False) #Deshabilito el boton que permite cambiar la ruta de verificacion
750 self.btnCHstart.setText("STOP") #Cambio el texto del boton
759 self.btnCHstart.setText("STOP") #Cambio el texto del boton
751
760
752 self.function_manual_check()
761 self.function_manual_check()
753
762
754
763
755 def function_manual_check(self):
764 def function_manual_check(self):
756
765
757 #Verificacion de los discos
766 #Verificacion de los discos
758 if self.bool_state_manual_check == True:
767 if self.bool_state_manual_check == True:
759
768
760 self.txtInfo.append("-----------manually checking disc: "+str(self.var_n_check_dirs + 1)
769 self.txtInfo.append("-----------manually checking disc: "+str(self.var_n_check_dirs + 1)
761 +" directory: "+self.list_check_dirs[self.var_n_check_dirs])
770 +" directory: "+self.list_check_dirs[self.var_n_check_dirs])
762
771
763 functions2.update_message(2, "CHECKING", self, index=self.var_n_check_dirs)
772 functions2.update_message(2, "CHECKING", self, index=self.var_n_check_dirs)
764
773
765 #Crea la carpeta tmpdata dentro de la ruta elegida
774 #Crea la carpeta tmpdata dentro de la ruta elegida
766 var_tmpdata=self.var_TDpath+"/tmpdata"
775 var_tmpdata=self.var_TDpath+"/tmpdata"
767 bool_return = functions.make_dir(var_tmpdata, self)
776 bool_return = functions.make_dir(var_tmpdata, self)
768 if not(bool_return):
777 if not(bool_return):
769 self.txtInfo.append("Error creating directory:"+ var_tmpdata)
778 self.txtInfo.append("Error creating directory:"+ var_tmpdata)
770 self.bool_state_burning = False
779 self.bool_state_burning = False
771 return
780 return
772
781
773 var_data_dir = self.list_check_dirs[self.var_n_check_dirs] #Carpeta donde esta montado el disco actual
782 var_data_dir = self.list_check_dirs[self.var_n_check_dirs] #Carpeta donde esta montado el disco actual
774
783
775 var_cmd = functions.cmd_manual_check(var_data_dir, var_tmpdata)
784 var_cmd = functions.cmd_manual_check(var_data_dir, var_tmpdata)
776
785
777 if self.var_real_show_cmd == True:
786 if self.var_real_show_cmd == True:
778 self.txtInfo.append("CMD: "+var_cmd)
787 self.txtInfo.append("CMD: "+var_cmd)
779
788
780 if self.var_real_manual_check == False:
789 if self.var_real_manual_check == False:
781 self.txtInfo.append('**function_manual_check')
790 self.txtInfo.append('**function_manual_check')
782 var_cmd="echo 'function_manual_check'"
791 var_cmd="echo 'function_manual_check'"
783
792
784 self.process_manual_check.start(var_cmd)
793 self.process_manual_check.start(var_cmd)
785
794
786
795
787 def function_manual_check_final(self):
796 def function_manual_check_final(self):
788 self.txtInfo.append("Manual check process is complete")
797 self.txtInfo.append("Manual check process is complete")
789 self.btnCHstart.setText("START") #Cambio el texto del boton
798 self.btnCHstart.setText("START") #Cambio el texto del boton
790 for var_mount_point in self.list_check_dirs:
799 for var_mount_point in self.list_check_dirs:
791 var_cmd = 'eject ' + var_mount_point
800 var_cmd = 'eject ' + var_mount_point
792 commands.getstatusoutput(var_cmd)
801 commands.getstatusoutput(var_cmd)
793
802
794
803
@@ -1,1408 +1,1408
1 <?xml version="1.0" encoding="UTF-8"?>
1 <?xml version="1.0" encoding="UTF-8"?>
2 <ui version="4.0">
2 <ui version="4.0">
3 <class>MainWindow</class>
3 <class>MainWindow</class>
4 <widget class="QMainWindow" name="MainWindow">
4 <widget class="QMainWindow" name="MainWindow">
5 <property name="geometry">
5 <property name="geometry">
6 <rect>
6 <rect>
7 <x>0</x>
7 <x>0</x>
8 <y>0</y>
8 <y>0</y>
9 <width>824</width>
9 <width>824</width>
10 <height>717</height>
10 <height>717</height>
11 </rect>
11 </rect>
12 </property>
12 </property>
13 <property name="windowTitle">
13 <property name="windowTitle">
14 <string>JRO BACKUP MANAGER</string>
14 <string>JRO BACKUP MANAGER</string>
15 </property>
15 </property>
16 <widget class="QWidget" name="centralwidget">
16 <widget class="QWidget" name="centralwidget">
17 <layout class="QVBoxLayout" name="verticalLayout">
17 <layout class="QVBoxLayout" name="verticalLayout">
18 <item>
18 <item>
19 <widget class="QTabWidget" name="tabWidget">
19 <widget class="QTabWidget" name="tabWidget">
20 <property name="enabled">
20 <property name="enabled">
21 <bool>true</bool>
21 <bool>true</bool>
22 </property>
22 </property>
23 <property name="sizePolicy">
23 <property name="sizePolicy">
24 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
24 <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
25 <horstretch>0</horstretch>
25 <horstretch>0</horstretch>
26 <verstretch>0</verstretch>
26 <verstretch>0</verstretch>
27 </sizepolicy>
27 </sizepolicy>
28 </property>
28 </property>
29 <property name="currentIndex">
29 <property name="currentIndex">
30 <number>2</number>
30 <number>0</number>
31 </property>
31 </property>
32 <widget class="QWidget" name="tabParameters">
32 <widget class="QWidget" name="tabParameters">
33 <property name="enabled">
33 <property name="enabled">
34 <bool>true</bool>
34 <bool>true</bool>
35 </property>
35 </property>
36 <attribute name="title">
36 <attribute name="title">
37 <string>Parameters</string>
37 <string>Parameters</string>
38 </attribute>
38 </attribute>
39 <layout class="QVBoxLayout" name="verticalLayout_2">
39 <layout class="QVBoxLayout" name="verticalLayout_2">
40 <item>
40 <item>
41 <layout class="QHBoxLayout" name="horizontalLayout">
41 <layout class="QHBoxLayout" name="horizontalLayout">
42 <property name="sizeConstraint">
42 <property name="sizeConstraint">
43 <enum>QLayout::SetDefaultConstraint</enum>
43 <enum>QLayout::SetDefaultConstraint</enum>
44 </property>
44 </property>
45 <item>
45 <item>
46 <widget class="QLineEdit" name="txtDpath">
46 <widget class="QLineEdit" name="txtDpath">
47 <property name="sizePolicy">
47 <property name="sizePolicy">
48 <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
48 <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
49 <horstretch>0</horstretch>
49 <horstretch>0</horstretch>
50 <verstretch>0</verstretch>
50 <verstretch>0</verstretch>
51 </sizepolicy>
51 </sizepolicy>
52 </property>
52 </property>
53 </widget>
53 </widget>
54 </item>
54 </item>
55 <item>
55 <item>
56 <widget class="QPushButton" name="btnDpath">
56 <widget class="QPushButton" name="btnDpath">
57 <property name="sizePolicy">
57 <property name="sizePolicy">
58 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
58 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
59 <horstretch>0</horstretch>
59 <horstretch>0</horstretch>
60 <verstretch>0</verstretch>
60 <verstretch>0</verstretch>
61 </sizepolicy>
61 </sizepolicy>
62 </property>
62 </property>
63 <property name="text">
63 <property name="text">
64 <string>Data Path</string>
64 <string>Data Path</string>
65 </property>
65 </property>
66 <property name="checkable">
66 <property name="checkable">
67 <bool>false</bool>
67 <bool>false</bool>
68 </property>
68 </property>
69 </widget>
69 </widget>
70 </item>
70 </item>
71 </layout>
71 </layout>
72 </item>
72 </item>
73 <item>
73 <item>
74 <layout class="QHBoxLayout" name="horizontalLayout_3">
74 <layout class="QHBoxLayout" name="horizontalLayout_3">
75 <item>
75 <item>
76 <widget class="QLineEdit" name="txtRpath"/>
76 <widget class="QLineEdit" name="txtRpath"/>
77 </item>
77 </item>
78 <item>
78 <item>
79 <widget class="QPushButton" name="btnRpath">
79 <widget class="QPushButton" name="btnRpath">
80 <property name="text">
80 <property name="text">
81 <string>Resource Path</string>
81 <string>Resource Path</string>
82 </property>
82 </property>
83 </widget>
83 </widget>
84 </item>
84 </item>
85 </layout>
85 </layout>
86 </item>
86 </item>
87 <item>
87 <item>
88 <widget class="QLabel" name="lblDtype">
88 <widget class="QLabel" name="lblDtype">
89 <property name="text">
89 <property name="text">
90 <string>Data Type</string>
90 <string>Data Type</string>
91 </property>
91 </property>
92 </widget>
92 </widget>
93 </item>
93 </item>
94 <item>
94 <item>
95 <layout class="QHBoxLayout" name="horizontalLayout_4">
95 <layout class="QHBoxLayout" name="horizontalLayout_4">
96 <item>
96 <item>
97 <widget class="QComboBox" name="lstDtype">
97 <widget class="QComboBox" name="lstDtype">
98 <item>
98 <item>
99 <property name="text">
99 <property name="text">
100 <string>Raw Data</string>
100 <string>Raw Data</string>
101 </property>
101 </property>
102 </item>
102 </item>
103 <item>
103 <item>
104 <property name="text">
104 <property name="text">
105 <string>Process Data</string>
105 <string>Process Data</string>
106 </property>
106 </property>
107 </item>
107 </item>
108 <item>
108 <item>
109 <property name="text">
109 <property name="text">
110 <string>BLTR Data</string>
110 <string>BLTR Data</string>
111 </property>
111 </property>
112 </item>
112 </item>
113 <item>
113 <item>
114 <property name="text">
114 <property name="text">
115 <string>Other</string>
115 <string>Other</string>
116 </property>
116 </property>
117 </item>
117 </item>
118 </widget>
118 </widget>
119 </item>
119 </item>
120 <item>
120 <item>
121 <widget class="QLineEdit" name="txtDtype">
121 <widget class="QLineEdit" name="txtDtype">
122 <property name="sizePolicy">
122 <property name="sizePolicy">
123 <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
123 <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
124 <horstretch>0</horstretch>
124 <horstretch>0</horstretch>
125 <verstretch>0</verstretch>
125 <verstretch>0</verstretch>
126 </sizepolicy>
126 </sizepolicy>
127 </property>
127 </property>
128 <property name="text">
128 <property name="text">
129 <string>r</string>
129 <string>r</string>
130 </property>
130 </property>
131 <property name="readOnly">
131 <property name="readOnly">
132 <bool>true</bool>
132 <bool>true</bool>
133 </property>
133 </property>
134 </widget>
134 </widget>
135 </item>
135 </item>
136 <item>
136 <item>
137 <spacer name="horizontalSpacer">
137 <spacer name="horizontalSpacer">
138 <property name="orientation">
138 <property name="orientation">
139 <enum>Qt::Horizontal</enum>
139 <enum>Qt::Horizontal</enum>
140 </property>
140 </property>
141 <property name="sizeType">
141 <property name="sizeType">
142 <enum>QSizePolicy::Expanding</enum>
142 <enum>QSizePolicy::Expanding</enum>
143 </property>
143 </property>
144 <property name="sizeHint" stdset="0">
144 <property name="sizeHint" stdset="0">
145 <size>
145 <size>
146 <width>40</width>
146 <width>40</width>
147 <height>20</height>
147 <height>20</height>
148 </size>
148 </size>
149 </property>
149 </property>
150 </spacer>
150 </spacer>
151 </item>
151 </item>
152 </layout>
152 </layout>
153 </item>
153 </item>
154 <item>
154 <item>
155 <layout class="QHBoxLayout" name="horizontalLayout_6">
155 <layout class="QHBoxLayout" name="horizontalLayout_6">
156 <item>
156 <item>
157 <widget class="QLabel" name="lblElabel">
157 <widget class="QLabel" name="lblElabel">
158 <property name="text">
158 <property name="text">
159 <string>Exp. Label at device</string>
159 <string>Exp. Label at device</string>
160 </property>
160 </property>
161 </widget>
161 </widget>
162 </item>
162 </item>
163 <item>
163 <item>
164 <widget class="QLabel" name="lblCopys">
164 <widget class="QLabel" name="lblCopys">
165 <property name="text">
165 <property name="text">
166 <string>Copys</string>
166 <string>Copys</string>
167 </property>
167 </property>
168 </widget>
168 </widget>
169 </item>
169 </item>
170 </layout>
170 </layout>
171 </item>
171 </item>
172 <item>
172 <item>
173 <layout class="QHBoxLayout" name="horizontalLayout_5">
173 <layout class="QHBoxLayout" name="horizontalLayout_5">
174 <item>
174 <item>
175 <widget class="QLineEdit" name="txtElabel"/>
175 <widget class="QLineEdit" name="txtElabel"/>
176 </item>
176 </item>
177 <item>
177 <item>
178 <widget class="QSpinBox" name="txtCopys">
178 <widget class="QSpinBox" name="txtCopys">
179 <property name="sizePolicy">
179 <property name="sizePolicy">
180 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
180 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
181 <horstretch>0</horstretch>
181 <horstretch>0</horstretch>
182 <verstretch>0</verstretch>
182 <verstretch>0</verstretch>
183 </sizepolicy>
183 </sizepolicy>
184 </property>
184 </property>
185 <property name="minimum">
185 <property name="minimum">
186 <number>1</number>
186 <number>1</number>
187 </property>
187 </property>
188 </widget>
188 </widget>
189 </item>
189 </item>
190 </layout>
190 </layout>
191 </item>
191 </item>
192 <item>
192 <item>
193 <layout class="QHBoxLayout" name="horizontalLayout_7">
193 <layout class="QHBoxLayout" name="horizontalLayout_7">
194 <item>
194 <item>
195 <widget class="QLabel" name="lblStartDay">
195 <widget class="QLabel" name="lblStartDay">
196 <property name="text">
196 <property name="text">
197 <string>Start Day:</string>
197 <string>Start Day:</string>
198 </property>
198 </property>
199 </widget>
199 </widget>
200 </item>
200 </item>
201 <item>
201 <item>
202 <widget class="QLabel" name="lblStopDay">
202 <widget class="QLabel" name="lblStopDay">
203 <property name="text">
203 <property name="text">
204 <string>Stop Day:</string>
204 <string>Stop Day:</string>
205 </property>
205 </property>
206 </widget>
206 </widget>
207 </item>
207 </item>
208 </layout>
208 </layout>
209 </item>
209 </item>
210 <item>
210 <item>
211 <layout class="QHBoxLayout" name="horizontalLayout_8">
211 <layout class="QHBoxLayout" name="horizontalLayout_8">
212 <item>
212 <item>
213 <widget class="QComboBox" name="lstStartDay"/>
213 <widget class="QComboBox" name="lstStartDay"/>
214 </item>
214 </item>
215 <item>
215 <item>
216 <widget class="QComboBox" name="lstStopDay"/>
216 <widget class="QComboBox" name="lstStopDay"/>
217 </item>
217 </item>
218 </layout>
218 </layout>
219 </item>
219 </item>
220 </layout>
220 </layout>
221 </widget>
221 </widget>
222 <widget class="QWidget" name="tabDconfig">
222 <widget class="QWidget" name="tabDconfig">
223 <property name="enabled">
223 <property name="enabled">
224 <bool>true</bool>
224 <bool>true</bool>
225 </property>
225 </property>
226 <property name="sizePolicy">
226 <property name="sizePolicy">
227 <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
227 <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
228 <horstretch>0</horstretch>
228 <horstretch>0</horstretch>
229 <verstretch>0</verstretch>
229 <verstretch>0</verstretch>
230 </sizepolicy>
230 </sizepolicy>
231 </property>
231 </property>
232 <attribute name="title">
232 <attribute name="title">
233 <string>Device Config.</string>
233 <string>Device Config.</string>
234 </attribute>
234 </attribute>
235 <layout class="QVBoxLayout" name="verticalLayout_3">
235 <layout class="QVBoxLayout" name="verticalLayout_3">
236 <item>
236 <item>
237 <layout class="QHBoxLayout" name="horizontalLayout_12">
237 <layout class="QHBoxLayout" name="horizontalLayout_12">
238 <item>
238 <item>
239 <layout class="QVBoxLayout" name="verticalLayout_15">
239 <layout class="QVBoxLayout" name="verticalLayout_15">
240 <item>
240 <item>
241 <widget class="QCheckBox" name="chkDevA">
241 <widget class="QCheckBox" name="chkDevA">
242 <property name="text">
242 <property name="text">
243 <string>Dev A</string>
243 <string>Dev A</string>
244 </property>
244 </property>
245 <property name="checked">
245 <property name="checked">
246 <bool>true</bool>
246 <bool>true</bool>
247 </property>
247 </property>
248 </widget>
248 </widget>
249 </item>
249 </item>
250 <item>
250 <item>
251 <widget class="QWidget" name="grpDevA" native="true">
251 <widget class="QWidget" name="grpDevA" native="true">
252 <layout class="QVBoxLayout" name="verticalLayout_11">
252 <layout class="QVBoxLayout" name="verticalLayout_11">
253 <item>
253 <item>
254 <widget class="QLineEdit" name="txtDeviceA">
254 <widget class="QLineEdit" name="txtDeviceA">
255 <property name="readOnly">
255 <property name="readOnly">
256 <bool>true</bool>
256 <bool>true</bool>
257 </property>
257 </property>
258 </widget>
258 </widget>
259 </item>
259 </item>
260 <item>
260 <item>
261 <widget class="QSpinBox" name="txtBspeedA">
261 <widget class="QSpinBox" name="txtBspeedA">
262 <property name="readOnly">
262 <property name="readOnly">
263 <bool>true</bool>
263 <bool>true</bool>
264 </property>
264 </property>
265 <property name="minimum">
265 <property name="minimum">
266 <number>1</number>
266 <number>1</number>
267 </property>
267 </property>
268 <property name="value">
268 <property name="value">
269 <number>16</number>
269 <number>16</number>
270 </property>
270 </property>
271 </widget>
271 </widget>
272 </item>
272 </item>
273 <item>
273 <item>
274 <widget class="QLineEdit" name="txtBmodeA">
274 <widget class="QLineEdit" name="txtBmodeA">
275 <property name="text">
275 <property name="text">
276 <string>-sao</string>
276 <string>-sao</string>
277 </property>
277 </property>
278 <property name="readOnly">
278 <property name="readOnly">
279 <bool>true</bool>
279 <bool>true</bool>
280 </property>
280 </property>
281 </widget>
281 </widget>
282 </item>
282 </item>
283 <item>
283 <item>
284 <widget class="QPushButton" name="btnTdevA">
284 <widget class="QPushButton" name="btnTdevA">
285 <property name="text">
285 <property name="text">
286 <string>Test DevA</string>
286 <string>Test DevA</string>
287 </property>
287 </property>
288 </widget>
288 </widget>
289 </item>
289 </item>
290 </layout>
290 </layout>
291 </widget>
291 </widget>
292 </item>
292 </item>
293 </layout>
293 </layout>
294 </item>
294 </item>
295 <item>
295 <item>
296 <layout class="QVBoxLayout" name="verticalLayout_16">
296 <layout class="QVBoxLayout" name="verticalLayout_16">
297 <item>
297 <item>
298 <widget class="QCheckBox" name="chkDevB">
298 <widget class="QCheckBox" name="chkDevB">
299 <property name="text">
299 <property name="text">
300 <string>Dev B</string>
300 <string>Dev B</string>
301 </property>
301 </property>
302 <property name="checked">
302 <property name="checked">
303 <bool>true</bool>
303 <bool>true</bool>
304 </property>
304 </property>
305 </widget>
305 </widget>
306 </item>
306 </item>
307 <item>
307 <item>
308 <widget class="QWidget" name="grpDevB" native="true">
308 <widget class="QWidget" name="grpDevB" native="true">
309 <layout class="QVBoxLayout" name="verticalLayout_12">
309 <layout class="QVBoxLayout" name="verticalLayout_12">
310 <item>
310 <item>
311 <widget class="QLineEdit" name="txtDeviceB">
311 <widget class="QLineEdit" name="txtDeviceB">
312 <property name="readOnly">
312 <property name="readOnly">
313 <bool>true</bool>
313 <bool>true</bool>
314 </property>
314 </property>
315 </widget>
315 </widget>
316 </item>
316 </item>
317 <item>
317 <item>
318 <widget class="QSpinBox" name="txtBspeedB">
318 <widget class="QSpinBox" name="txtBspeedB">
319 <property name="readOnly">
319 <property name="readOnly">
320 <bool>true</bool>
320 <bool>true</bool>
321 </property>
321 </property>
322 <property name="minimum">
322 <property name="minimum">
323 <number>1</number>
323 <number>1</number>
324 </property>
324 </property>
325 <property name="value">
325 <property name="value">
326 <number>16</number>
326 <number>16</number>
327 </property>
327 </property>
328 </widget>
328 </widget>
329 </item>
329 </item>
330 <item>
330 <item>
331 <widget class="QLineEdit" name="txtBmodeB">
331 <widget class="QLineEdit" name="txtBmodeB">
332 <property name="text">
332 <property name="text">
333 <string>-sao</string>
333 <string>-sao</string>
334 </property>
334 </property>
335 <property name="readOnly">
335 <property name="readOnly">
336 <bool>true</bool>
336 <bool>true</bool>
337 </property>
337 </property>
338 </widget>
338 </widget>
339 </item>
339 </item>
340 <item>
340 <item>
341 <widget class="QPushButton" name="btnTdevB">
341 <widget class="QPushButton" name="btnTdevB">
342 <property name="text">
342 <property name="text">
343 <string>Test DevB</string>
343 <string>Test DevB</string>
344 </property>
344 </property>
345 </widget>
345 </widget>
346 </item>
346 </item>
347 </layout>
347 </layout>
348 </widget>
348 </widget>
349 </item>
349 </item>
350 </layout>
350 </layout>
351 </item>
351 </item>
352 <item>
352 <item>
353 <layout class="QVBoxLayout" name="verticalLayout_17">
353 <layout class="QVBoxLayout" name="verticalLayout_17">
354 <item>
354 <item>
355 <widget class="QCheckBox" name="chkDevC">
355 <widget class="QCheckBox" name="chkDevC">
356 <property name="text">
356 <property name="text">
357 <string>Dev C</string>
357 <string>Dev C</string>
358 </property>
358 </property>
359 <property name="checked">
359 <property name="checked">
360 <bool>true</bool>
360 <bool>true</bool>
361 </property>
361 </property>
362 </widget>
362 </widget>
363 </item>
363 </item>
364 <item>
364 <item>
365 <widget class="QWidget" name="grpDevC" native="true">
365 <widget class="QWidget" name="grpDevC" native="true">
366 <layout class="QVBoxLayout" name="verticalLayout_13">
366 <layout class="QVBoxLayout" name="verticalLayout_13">
367 <item>
367 <item>
368 <widget class="QLineEdit" name="txtDeviceC">
368 <widget class="QLineEdit" name="txtDeviceC">
369 <property name="readOnly">
369 <property name="readOnly">
370 <bool>true</bool>
370 <bool>true</bool>
371 </property>
371 </property>
372 </widget>
372 </widget>
373 </item>
373 </item>
374 <item>
374 <item>
375 <widget class="QSpinBox" name="txtBspeedC">
375 <widget class="QSpinBox" name="txtBspeedC">
376 <property name="readOnly">
376 <property name="readOnly">
377 <bool>true</bool>
377 <bool>true</bool>
378 </property>
378 </property>
379 <property name="minimum">
379 <property name="minimum">
380 <number>1</number>
380 <number>1</number>
381 </property>
381 </property>
382 <property name="value">
382 <property name="value">
383 <number>16</number>
383 <number>16</number>
384 </property>
384 </property>
385 </widget>
385 </widget>
386 </item>
386 </item>
387 <item>
387 <item>
388 <widget class="QLineEdit" name="txtBmodeC">
388 <widget class="QLineEdit" name="txtBmodeC">
389 <property name="text">
389 <property name="text">
390 <string>-sao</string>
390 <string>-sao</string>
391 </property>
391 </property>
392 <property name="readOnly">
392 <property name="readOnly">
393 <bool>true</bool>
393 <bool>true</bool>
394 </property>
394 </property>
395 </widget>
395 </widget>
396 </item>
396 </item>
397 <item>
397 <item>
398 <widget class="QPushButton" name="btnTdevC">
398 <widget class="QPushButton" name="btnTdevC">
399 <property name="text">
399 <property name="text">
400 <string>Test DevC</string>
400 <string>Test DevC</string>
401 </property>
401 </property>
402 </widget>
402 </widget>
403 </item>
403 </item>
404 </layout>
404 </layout>
405 </widget>
405 </widget>
406 </item>
406 </item>
407 </layout>
407 </layout>
408 </item>
408 </item>
409 <item>
409 <item>
410 <layout class="QVBoxLayout" name="verticalLayout_18">
410 <layout class="QVBoxLayout" name="verticalLayout_18">
411 <item>
411 <item>
412 <widget class="QCheckBox" name="chkDevD">
412 <widget class="QCheckBox" name="chkDevD">
413 <property name="text">
413 <property name="text">
414 <string>Dev D</string>
414 <string>Dev D</string>
415 </property>
415 </property>
416 <property name="checked">
416 <property name="checked">
417 <bool>true</bool>
417 <bool>true</bool>
418 </property>
418 </property>
419 </widget>
419 </widget>
420 </item>
420 </item>
421 <item>
421 <item>
422 <widget class="QWidget" name="grpDevD" native="true">
422 <widget class="QWidget" name="grpDevD" native="true">
423 <layout class="QVBoxLayout" name="verticalLayout_14">
423 <layout class="QVBoxLayout" name="verticalLayout_14">
424 <item>
424 <item>
425 <widget class="QLineEdit" name="txtDeviceD">
425 <widget class="QLineEdit" name="txtDeviceD">
426 <property name="readOnly">
426 <property name="readOnly">
427 <bool>true</bool>
427 <bool>true</bool>
428 </property>
428 </property>
429 </widget>
429 </widget>
430 </item>
430 </item>
431 <item>
431 <item>
432 <widget class="QSpinBox" name="txtBspeedD">
432 <widget class="QSpinBox" name="txtBspeedD">
433 <property name="readOnly">
433 <property name="readOnly">
434 <bool>true</bool>
434 <bool>true</bool>
435 </property>
435 </property>
436 <property name="minimum">
436 <property name="minimum">
437 <number>1</number>
437 <number>1</number>
438 </property>
438 </property>
439 <property name="value">
439 <property name="value">
440 <number>16</number>
440 <number>16</number>
441 </property>
441 </property>
442 </widget>
442 </widget>
443 </item>
443 </item>
444 <item>
444 <item>
445 <widget class="QLineEdit" name="txtBmodeD">
445 <widget class="QLineEdit" name="txtBmodeD">
446 <property name="text">
446 <property name="text">
447 <string>-sao</string>
447 <string>-sao</string>
448 </property>
448 </property>
449 <property name="readOnly">
449 <property name="readOnly">
450 <bool>true</bool>
450 <bool>true</bool>
451 </property>
451 </property>
452 </widget>
452 </widget>
453 </item>
453 </item>
454 <item>
454 <item>
455 <widget class="QPushButton" name="btnTdevD">
455 <widget class="QPushButton" name="btnTdevD">
456 <property name="text">
456 <property name="text">
457 <string>Test DevD</string>
457 <string>Test DevD</string>
458 </property>
458 </property>
459 </widget>
459 </widget>
460 </item>
460 </item>
461 </layout>
461 </layout>
462 </widget>
462 </widget>
463 </item>
463 </item>
464 </layout>
464 </layout>
465 </item>
465 </item>
466 <item>
466 <item>
467 <layout class="QVBoxLayout" name="verticalLayout_19">
467 <layout class="QVBoxLayout" name="verticalLayout_19">
468 <item>
468 <item>
469 <spacer name="verticalSpacer_3">
469 <spacer name="verticalSpacer_3">
470 <property name="orientation">
470 <property name="orientation">
471 <enum>Qt::Vertical</enum>
471 <enum>Qt::Vertical</enum>
472 </property>
472 </property>
473 <property name="sizeType">
473 <property name="sizeType">
474 <enum>QSizePolicy::Minimum</enum>
474 <enum>QSizePolicy::Minimum</enum>
475 </property>
475 </property>
476 <property name="sizeHint" stdset="0">
476 <property name="sizeHint" stdset="0">
477 <size>
477 <size>
478 <width>20</width>
478 <width>20</width>
479 <height>40</height>
479 <height>40</height>
480 </size>
480 </size>
481 </property>
481 </property>
482 </spacer>
482 </spacer>
483 </item>
483 </item>
484 <item>
484 <item>
485 <widget class="QWidget" name="grpDevD_2" native="true">
485 <widget class="QWidget" name="grpDevD_2" native="true">
486 <layout class="QVBoxLayout" name="verticalLayout_20">
486 <layout class="QVBoxLayout" name="verticalLayout_20">
487 <item>
487 <item>
488 <widget class="QLabel" name="lblDevice">
488 <widget class="QLabel" name="lblDevice">
489 <property name="text">
489 <property name="text">
490 <string>Device</string>
490 <string>Device</string>
491 </property>
491 </property>
492 </widget>
492 </widget>
493 </item>
493 </item>
494 <item>
494 <item>
495 <widget class="QLabel" name="lblBspeed">
495 <widget class="QLabel" name="lblBspeed">
496 <property name="text">
496 <property name="text">
497 <string>Burn Speed</string>
497 <string>Burn Speed</string>
498 </property>
498 </property>
499 </widget>
499 </widget>
500 </item>
500 </item>
501 <item>
501 <item>
502 <widget class="QLabel" name="lblBmode">
502 <widget class="QLabel" name="lblBmode">
503 <property name="text">
503 <property name="text">
504 <string>Burn Mode</string>
504 <string>Burn Mode</string>
505 </property>
505 </property>
506 </widget>
506 </widget>
507 </item>
507 </item>
508 <item>
508 <item>
509 <spacer name="verticalSpacer_4">
509 <spacer name="verticalSpacer_4">
510 <property name="orientation">
510 <property name="orientation">
511 <enum>Qt::Vertical</enum>
511 <enum>Qt::Vertical</enum>
512 </property>
512 </property>
513 <property name="sizeType">
513 <property name="sizeType">
514 <enum>QSizePolicy::Fixed</enum>
514 <enum>QSizePolicy::Fixed</enum>
515 </property>
515 </property>
516 <property name="sizeHint" stdset="0">
516 <property name="sizeHint" stdset="0">
517 <size>
517 <size>
518 <width>20</width>
518 <width>20</width>
519 <height>40</height>
519 <height>40</height>
520 </size>
520 </size>
521 </property>
521 </property>
522 </spacer>
522 </spacer>
523 </item>
523 </item>
524 </layout>
524 </layout>
525 </widget>
525 </widget>
526 </item>
526 </item>
527 </layout>
527 </layout>
528 </item>
528 </item>
529 </layout>
529 </layout>
530 </item>
530 </item>
531 <item>
531 <item>
532 <spacer name="verticalSpacer_2">
532 <spacer name="verticalSpacer_2">
533 <property name="orientation">
533 <property name="orientation">
534 <enum>Qt::Vertical</enum>
534 <enum>Qt::Vertical</enum>
535 </property>
535 </property>
536 <property name="sizeType">
536 <property name="sizeType">
537 <enum>QSizePolicy::Minimum</enum>
537 <enum>QSizePolicy::Minimum</enum>
538 </property>
538 </property>
539 <property name="sizeHint" stdset="0">
539 <property name="sizeHint" stdset="0">
540 <size>
540 <size>
541 <width>20</width>
541 <width>20</width>
542 <height>40</height>
542 <height>40</height>
543 </size>
543 </size>
544 </property>
544 </property>
545 </spacer>
545 </spacer>
546 </item>
546 </item>
547 <item>
547 <item>
548 <layout class="QHBoxLayout" name="horizontalLayout_11">
548 <layout class="QHBoxLayout" name="horizontalLayout_11">
549 <property name="spacing">
549 <property name="spacing">
550 <number>6</number>
550 <number>6</number>
551 </property>
551 </property>
552 <property name="sizeConstraint">
552 <property name="sizeConstraint">
553 <enum>QLayout::SetDefaultConstraint</enum>
553 <enum>QLayout::SetDefaultConstraint</enum>
554 </property>
554 </property>
555 <item>
555 <item>
556 <widget class="QLabel" name="lblDcapacity">
556 <widget class="QLabel" name="lblDcapacity">
557 <property name="sizePolicy">
557 <property name="sizePolicy">
558 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
558 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
559 <horstretch>0</horstretch>
559 <horstretch>0</horstretch>
560 <verstretch>0</verstretch>
560 <verstretch>0</verstretch>
561 </sizepolicy>
561 </sizepolicy>
562 </property>
562 </property>
563 <property name="text">
563 <property name="text">
564 <string>Device Capacity</string>
564 <string>Device Capacity</string>
565 </property>
565 </property>
566 </widget>
566 </widget>
567 </item>
567 </item>
568 <item>
568 <item>
569 <spacer name="horizontalSpacer_2">
569 <spacer name="horizontalSpacer_2">
570 <property name="orientation">
570 <property name="orientation">
571 <enum>Qt::Horizontal</enum>
571 <enum>Qt::Horizontal</enum>
572 </property>
572 </property>
573 <property name="sizeHint" stdset="0">
573 <property name="sizeHint" stdset="0">
574 <size>
574 <size>
575 <width>40</width>
575 <width>40</width>
576 <height>20</height>
576 <height>20</height>
577 </size>
577 </size>
578 </property>
578 </property>
579 </spacer>
579 </spacer>
580 </item>
580 </item>
581 </layout>
581 </layout>
582 </item>
582 </item>
583 <item>
583 <item>
584 <layout class="QHBoxLayout" name="horizontalLayout_10">
584 <layout class="QHBoxLayout" name="horizontalLayout_10">
585 <property name="sizeConstraint">
585 <property name="sizeConstraint">
586 <enum>QLayout::SetFixedSize</enum>
586 <enum>QLayout::SetFixedSize</enum>
587 </property>
587 </property>
588 <item>
588 <item>
589 <widget class="QComboBox" name="lstDcapacity">
589 <widget class="QComboBox" name="lstDcapacity">
590 <property name="currentIndex">
590 <property name="currentIndex">
591 <number>2</number>
591 <number>2</number>
592 </property>
592 </property>
593 <item>
593 <item>
594 <property name="text">
594 <property name="text">
595 <string>BluRay [25.0 GB]</string>
595 <string>BluRay [25.0 GB]</string>
596 </property>
596 </property>
597 </item>
597 </item>
598 <item>
598 <item>
599 <property name="text">
599 <property name="text">
600 <string>DVD2 [8.5 GB]</string>
600 <string>DVD2 [8.5 GB]</string>
601 </property>
601 </property>
602 </item>
602 </item>
603 <item>
603 <item>
604 <property name="text">
604 <property name="text">
605 <string>DVD1 [4.7 GB]</string>
605 <string>DVD1 [4.7 GB]</string>
606 </property>
606 </property>
607 </item>
607 </item>
608 <item>
608 <item>
609 <property name="text">
609 <property name="text">
610 <string>CD [0.7 GB]</string>
610 <string>CD [0.7 GB]</string>
611 </property>
611 </property>
612 </item>
612 </item>
613 <item>
613 <item>
614 <property name="text">
614 <property name="text">
615 <string>Other [? MB]</string>
615 <string>Other [? MB]</string>
616 </property>
616 </property>
617 </item>
617 </item>
618 </widget>
618 </widget>
619 </item>
619 </item>
620 <item>
620 <item>
621 <widget class="QDoubleSpinBox" name="txtDcapacity">
621 <widget class="QDoubleSpinBox" name="txtDcapacity">
622 <property name="sizePolicy">
622 <property name="sizePolicy">
623 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
623 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
624 <horstretch>0</horstretch>
624 <horstretch>0</horstretch>
625 <verstretch>0</verstretch>
625 <verstretch>0</verstretch>
626 </sizepolicy>
626 </sizepolicy>
627 </property>
627 </property>
628 <property name="readOnly">
628 <property name="readOnly">
629 <bool>true</bool>
629 <bool>true</bool>
630 </property>
630 </property>
631 <property name="minimum">
631 <property name="minimum">
632 <double>100.000000000000000</double>
632 <double>100.000000000000000</double>
633 </property>
633 </property>
634 <property name="maximum">
634 <property name="maximum">
635 <double>99999.990000000005239</double>
635 <double>99999.990000000005239</double>
636 </property>
636 </property>
637 <property name="value">
637 <property name="value">
638 <double>4482.270000000000437</double>
638 <double>4482.270000000000437</double>
639 </property>
639 </property>
640 </widget>
640 </widget>
641 </item>
641 </item>
642 <item>
642 <item>
643 <spacer name="horizontalSpacer_3">
643 <spacer name="horizontalSpacer_3">
644 <property name="orientation">
644 <property name="orientation">
645 <enum>Qt::Horizontal</enum>
645 <enum>Qt::Horizontal</enum>
646 </property>
646 </property>
647 <property name="sizeHint" stdset="0">
647 <property name="sizeHint" stdset="0">
648 <size>
648 <size>
649 <width>40</width>
649 <width>40</width>
650 <height>20</height>
650 <height>20</height>
651 </size>
651 </size>
652 </property>
652 </property>
653 </spacer>
653 </spacer>
654 </item>
654 </item>
655 <item>
655 <item>
656 <widget class="QLabel" name="lblPSgraphic">
656 <widget class="QLabel" name="lblPSgraphic">
657 <property name="text">
657 <property name="text">
658 <string>PS Graphic</string>
658 <string>PS Graphic</string>
659 </property>
659 </property>
660 </widget>
660 </widget>
661 </item>
661 </item>
662 <item>
662 <item>
663 <widget class="QSpinBox" name="txtPSgraphic">
663 <widget class="QSpinBox" name="txtPSgraphic">
664 <property name="minimum">
664 <property name="minimum">
665 <number>1</number>
665 <number>1</number>
666 </property>
666 </property>
667 <property name="maximum">
667 <property name="maximum">
668 <number>33</number>
668 <number>33</number>
669 </property>
669 </property>
670 </widget>
670 </widget>
671 </item>
671 </item>
672 </layout>
672 </layout>
673 </item>
673 </item>
674 </layout>
674 </layout>
675 </widget>
675 </widget>
676 <widget class="QWidget" name="tabStatus">
676 <widget class="QWidget" name="tabStatus">
677 <attribute name="title">
677 <attribute name="title">
678 <string>Status Burn</string>
678 <string>Status Burn</string>
679 </attribute>
679 </attribute>
680 <layout class="QVBoxLayout" name="verticalLayout_4">
680 <layout class="QVBoxLayout" name="verticalLayout_4">
681 <item>
681 <item>
682 <layout class="QHBoxLayout" name="horizontalLayout_18">
682 <layout class="QHBoxLayout" name="horizontalLayout_18">
683 <item>
683 <item>
684 <layout class="QVBoxLayout" name="verticalLayout_21">
684 <layout class="QVBoxLayout" name="verticalLayout_21">
685 <item>
685 <item>
686 <widget class="QLabel" name="label_4">
686 <widget class="QLabel" name="label_4">
687 <property name="text">
687 <property name="text">
688 <string>BURN</string>
688 <string>BURN</string>
689 </property>
689 </property>
690 </widget>
690 </widget>
691 </item>
691 </item>
692 <item>
692 <item>
693 <spacer name="horizontalSpacer_9">
693 <spacer name="horizontalSpacer_9">
694 <property name="orientation">
694 <property name="orientation">
695 <enum>Qt::Horizontal</enum>
695 <enum>Qt::Horizontal</enum>
696 </property>
696 </property>
697 <property name="sizeType">
697 <property name="sizeType">
698 <enum>QSizePolicy::Minimum</enum>
698 <enum>QSizePolicy::Minimum</enum>
699 </property>
699 </property>
700 <property name="sizeHint" stdset="0">
700 <property name="sizeHint" stdset="0">
701 <size>
701 <size>
702 <width>40</width>
702 <width>40</width>
703 <height>20</height>
703 <height>20</height>
704 </size>
704 </size>
705 </property>
705 </property>
706 </spacer>
706 </spacer>
707 </item>
707 </item>
708 <item>
708 <item>
709 <widget class="QLabel" name="lblSTATUS">
709 <widget class="QLabel" name="lblSTATUS">
710 <property name="sizePolicy">
710 <property name="sizePolicy">
711 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
711 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
712 <horstretch>0</horstretch>
712 <horstretch>0</horstretch>
713 <verstretch>0</verstretch>
713 <verstretch>0</verstretch>
714 </sizepolicy>
714 </sizepolicy>
715 </property>
715 </property>
716 <property name="text">
716 <property name="text">
717 <string>STATUS</string>
717 <string>STATUS</string>
718 </property>
718 </property>
719 </widget>
719 </widget>
720 </item>
720 </item>
721 <item>
721 <item>
722 <widget class="QLabel" name="lblINFO">
722 <widget class="QLabel" name="lblINFO">
723 <property name="text">
723 <property name="text">
724 <string>DISC</string>
724 <string>DISC</string>
725 </property>
725 </property>
726 </widget>
726 </widget>
727 </item>
727 </item>
728 <item>
728 <item>
729 <widget class="QLabel" name="lblSET">
729 <widget class="QLabel" name="lblSET">
730 <property name="text">
730 <property name="text">
731 <string>COPY</string>
731 <string>COPY</string>
732 </property>
732 </property>
733 </widget>
733 </widget>
734 </item>
734 </item>
735 </layout>
735 </layout>
736 </item>
736 </item>
737 <item>
737 <item>
738 <layout class="QVBoxLayout" name="verticalLayout_22">
738 <layout class="QVBoxLayout" name="verticalLayout_22">
739 <item>
739 <item>
740 <spacer name="horizontalSpacer_5">
740 <spacer name="horizontalSpacer_5">
741 <property name="orientation">
741 <property name="orientation">
742 <enum>Qt::Horizontal</enum>
742 <enum>Qt::Horizontal</enum>
743 </property>
743 </property>
744 <property name="sizeType">
744 <property name="sizeType">
745 <enum>QSizePolicy::Minimum</enum>
745 <enum>QSizePolicy::Minimum</enum>
746 </property>
746 </property>
747 <property name="sizeHint" stdset="0">
747 <property name="sizeHint" stdset="0">
748 <size>
748 <size>
749 <width>40</width>
749 <width>40</width>
750 <height>20</height>
750 <height>20</height>
751 </size>
751 </size>
752 </property>
752 </property>
753 </spacer>
753 </spacer>
754 </item>
754 </item>
755 <item>
755 <item>
756 <widget class="QLabel" name="lblDevA">
756 <widget class="QLabel" name="lblDevA">
757 <property name="text">
757 <property name="text">
758 <string>DEV A</string>
758 <string>DEV A</string>
759 </property>
759 </property>
760 <property name="alignment">
760 <property name="alignment">
761 <set>Qt::AlignCenter</set>
761 <set>Qt::AlignCenter</set>
762 </property>
762 </property>
763 </widget>
763 </widget>
764 </item>
764 </item>
765 <item>
765 <item>
766 <widget class="QLineEdit" name="txtBstatusA">
766 <widget class="QLineEdit" name="txtBstatusA">
767 <property name="readOnly">
767 <property name="readOnly">
768 <bool>true</bool>
768 <bool>true</bool>
769 </property>
769 </property>
770 </widget>
770 </widget>
771 </item>
771 </item>
772 <item>
772 <item>
773 <widget class="QLineEdit" name="txtBdiscA">
773 <widget class="QLineEdit" name="txtBdiscA">
774 <property name="readOnly">
774 <property name="readOnly">
775 <bool>true</bool>
775 <bool>true</bool>
776 </property>
776 </property>
777 </widget>
777 </widget>
778 </item>
778 </item>
779 <item>
779 <item>
780 <widget class="QLineEdit" name="txtBcopyA">
780 <widget class="QLineEdit" name="txtBcopyA">
781 <property name="readOnly">
781 <property name="readOnly">
782 <bool>true</bool>
782 <bool>true</bool>
783 </property>
783 </property>
784 </widget>
784 </widget>
785 </item>
785 </item>
786 </layout>
786 </layout>
787 </item>
787 </item>
788 <item>
788 <item>
789 <layout class="QVBoxLayout" name="verticalLayout_23">
789 <layout class="QVBoxLayout" name="verticalLayout_23">
790 <item>
790 <item>
791 <spacer name="horizontalSpacer_6">
791 <spacer name="horizontalSpacer_6">
792 <property name="orientation">
792 <property name="orientation">
793 <enum>Qt::Horizontal</enum>
793 <enum>Qt::Horizontal</enum>
794 </property>
794 </property>
795 <property name="sizeType">
795 <property name="sizeType">
796 <enum>QSizePolicy::Minimum</enum>
796 <enum>QSizePolicy::Minimum</enum>
797 </property>
797 </property>
798 <property name="sizeHint" stdset="0">
798 <property name="sizeHint" stdset="0">
799 <size>
799 <size>
800 <width>40</width>
800 <width>40</width>
801 <height>20</height>
801 <height>20</height>
802 </size>
802 </size>
803 </property>
803 </property>
804 </spacer>
804 </spacer>
805 </item>
805 </item>
806 <item>
806 <item>
807 <widget class="QLabel" name="lblDevB">
807 <widget class="QLabel" name="lblDevB">
808 <property name="text">
808 <property name="text">
809 <string>DEV B</string>
809 <string>DEV B</string>
810 </property>
810 </property>
811 <property name="alignment">
811 <property name="alignment">
812 <set>Qt::AlignCenter</set>
812 <set>Qt::AlignCenter</set>
813 </property>
813 </property>
814 </widget>
814 </widget>
815 </item>
815 </item>
816 <item>
816 <item>
817 <widget class="QLineEdit" name="txtBstatusB">
817 <widget class="QLineEdit" name="txtBstatusB">
818 <property name="readOnly">
818 <property name="readOnly">
819 <bool>true</bool>
819 <bool>true</bool>
820 </property>
820 </property>
821 </widget>
821 </widget>
822 </item>
822 </item>
823 <item>
823 <item>
824 <widget class="QLineEdit" name="txtBdiscB">
824 <widget class="QLineEdit" name="txtBdiscB">
825 <property name="readOnly">
825 <property name="readOnly">
826 <bool>true</bool>
826 <bool>true</bool>
827 </property>
827 </property>
828 </widget>
828 </widget>
829 </item>
829 </item>
830 <item>
830 <item>
831 <widget class="QLineEdit" name="txtBcopyB">
831 <widget class="QLineEdit" name="txtBcopyB">
832 <property name="readOnly">
832 <property name="readOnly">
833 <bool>true</bool>
833 <bool>true</bool>
834 </property>
834 </property>
835 </widget>
835 </widget>
836 </item>
836 </item>
837 </layout>
837 </layout>
838 </item>
838 </item>
839 <item>
839 <item>
840 <layout class="QVBoxLayout" name="verticalLayout_24">
840 <layout class="QVBoxLayout" name="verticalLayout_24">
841 <item>
841 <item>
842 <spacer name="horizontalSpacer_7">
842 <spacer name="horizontalSpacer_7">
843 <property name="orientation">
843 <property name="orientation">
844 <enum>Qt::Horizontal</enum>
844 <enum>Qt::Horizontal</enum>
845 </property>
845 </property>
846 <property name="sizeType">
846 <property name="sizeType">
847 <enum>QSizePolicy::Minimum</enum>
847 <enum>QSizePolicy::Minimum</enum>
848 </property>
848 </property>
849 <property name="sizeHint" stdset="0">
849 <property name="sizeHint" stdset="0">
850 <size>
850 <size>
851 <width>40</width>
851 <width>40</width>
852 <height>20</height>
852 <height>20</height>
853 </size>
853 </size>
854 </property>
854 </property>
855 </spacer>
855 </spacer>
856 </item>
856 </item>
857 <item>
857 <item>
858 <widget class="QLabel" name="lblDevC">
858 <widget class="QLabel" name="lblDevC">
859 <property name="text">
859 <property name="text">
860 <string>DEV C</string>
860 <string>DEV C</string>
861 </property>
861 </property>
862 <property name="alignment">
862 <property name="alignment">
863 <set>Qt::AlignCenter</set>
863 <set>Qt::AlignCenter</set>
864 </property>
864 </property>
865 </widget>
865 </widget>
866 </item>
866 </item>
867 <item>
867 <item>
868 <widget class="QLineEdit" name="txtBstatusC">
868 <widget class="QLineEdit" name="txtBstatusC">
869 <property name="readOnly">
869 <property name="readOnly">
870 <bool>true</bool>
870 <bool>true</bool>
871 </property>
871 </property>
872 </widget>
872 </widget>
873 </item>
873 </item>
874 <item>
874 <item>
875 <widget class="QLineEdit" name="txtBdiscC">
875 <widget class="QLineEdit" name="txtBdiscC">
876 <property name="readOnly">
876 <property name="readOnly">
877 <bool>true</bool>
877 <bool>true</bool>
878 </property>
878 </property>
879 </widget>
879 </widget>
880 </item>
880 </item>
881 <item>
881 <item>
882 <widget class="QLineEdit" name="txtBcopyC">
882 <widget class="QLineEdit" name="txtBcopyC">
883 <property name="readOnly">
883 <property name="readOnly">
884 <bool>true</bool>
884 <bool>true</bool>
885 </property>
885 </property>
886 </widget>
886 </widget>
887 </item>
887 </item>
888 </layout>
888 </layout>
889 </item>
889 </item>
890 <item>
890 <item>
891 <layout class="QVBoxLayout" name="verticalLayout_25">
891 <layout class="QVBoxLayout" name="verticalLayout_25">
892 <item>
892 <item>
893 <spacer name="horizontalSpacer_8">
893 <spacer name="horizontalSpacer_8">
894 <property name="orientation">
894 <property name="orientation">
895 <enum>Qt::Horizontal</enum>
895 <enum>Qt::Horizontal</enum>
896 </property>
896 </property>
897 <property name="sizeType">
897 <property name="sizeType">
898 <enum>QSizePolicy::Minimum</enum>
898 <enum>QSizePolicy::Minimum</enum>
899 </property>
899 </property>
900 <property name="sizeHint" stdset="0">
900 <property name="sizeHint" stdset="0">
901 <size>
901 <size>
902 <width>40</width>
902 <width>40</width>
903 <height>20</height>
903 <height>20</height>
904 </size>
904 </size>
905 </property>
905 </property>
906 </spacer>
906 </spacer>
907 </item>
907 </item>
908 <item>
908 <item>
909 <widget class="QLabel" name="lblDevD">
909 <widget class="QLabel" name="lblDevD">
910 <property name="text">
910 <property name="text">
911 <string>DEV D</string>
911 <string>DEV D</string>
912 </property>
912 </property>
913 <property name="alignment">
913 <property name="alignment">
914 <set>Qt::AlignCenter</set>
914 <set>Qt::AlignCenter</set>
915 </property>
915 </property>
916 </widget>
916 </widget>
917 </item>
917 </item>
918 <item>
918 <item>
919 <widget class="QLineEdit" name="txtBstatusD">
919 <widget class="QLineEdit" name="txtBstatusD">
920 <property name="readOnly">
920 <property name="readOnly">
921 <bool>true</bool>
921 <bool>true</bool>
922 </property>
922 </property>
923 </widget>
923 </widget>
924 </item>
924 </item>
925 <item>
925 <item>
926 <widget class="QLineEdit" name="txtBdiscD">
926 <widget class="QLineEdit" name="txtBdiscD">
927 <property name="readOnly">
927 <property name="readOnly">
928 <bool>true</bool>
928 <bool>true</bool>
929 </property>
929 </property>
930 </widget>
930 </widget>
931 </item>
931 </item>
932 <item>
932 <item>
933 <widget class="QLineEdit" name="txtBcopyD">
933 <widget class="QLineEdit" name="txtBcopyD">
934 <property name="readOnly">
934 <property name="readOnly">
935 <bool>true</bool>
935 <bool>true</bool>
936 </property>
936 </property>
937 </widget>
937 </widget>
938 </item>
938 </item>
939 </layout>
939 </layout>
940 </item>
940 </item>
941 </layout>
941 </layout>
942 </item>
942 </item>
943 <item>
943 <item>
944 <spacer name="verticalSpacer">
944 <spacer name="verticalSpacer">
945 <property name="orientation">
945 <property name="orientation">
946 <enum>Qt::Vertical</enum>
946 <enum>Qt::Vertical</enum>
947 </property>
947 </property>
948 <property name="sizeType">
948 <property name="sizeType">
949 <enum>QSizePolicy::Fixed</enum>
949 <enum>QSizePolicy::Fixed</enum>
950 </property>
950 </property>
951 <property name="sizeHint" stdset="0">
951 <property name="sizeHint" stdset="0">
952 <size>
952 <size>
953 <width>20</width>
953 <width>20</width>
954 <height>20</height>
954 <height>20</height>
955 </size>
955 </size>
956 </property>
956 </property>
957 </spacer>
957 </spacer>
958 </item>
958 </item>
959 <item>
959 <item>
960 <layout class="QHBoxLayout" name="horizontalLayout_16">
960 <layout class="QHBoxLayout" name="horizontalLayout_16">
961 <item>
961 <item>
962 <widget class="QLabel" name="label">
962 <widget class="QLabel" name="label">
963 <property name="text">
963 <property name="text">
964 <string>CHECK</string>
964 <string>CHECK</string>
965 </property>
965 </property>
966 </widget>
966 </widget>
967 </item>
967 </item>
968 <item>
968 <item>
969 <spacer name="horizontalSpacer_14">
969 <spacer name="horizontalSpacer_14">
970 <property name="orientation">
970 <property name="orientation">
971 <enum>Qt::Horizontal</enum>
971 <enum>Qt::Horizontal</enum>
972 </property>
972 </property>
973 <property name="sizeHint" stdset="0">
973 <property name="sizeHint" stdset="0">
974 <size>
974 <size>
975 <width>40</width>
975 <width>40</width>
976 <height>20</height>
976 <height>20</height>
977 </size>
977 </size>
978 </property>
978 </property>
979 </spacer>
979 </spacer>
980 </item>
980 </item>
981 </layout>
981 </layout>
982 </item>
982 </item>
983 <item>
983 <item>
984 <layout class="QHBoxLayout" name="horizontalLayout_17">
984 <layout class="QHBoxLayout" name="horizontalLayout_17">
985 <item>
985 <item>
986 <spacer name="horizontalSpacer_13">
986 <spacer name="horizontalSpacer_13">
987 <property name="orientation">
987 <property name="orientation">
988 <enum>Qt::Horizontal</enum>
988 <enum>Qt::Horizontal</enum>
989 </property>
989 </property>
990 <property name="sizeType">
990 <property name="sizeType">
991 <enum>QSizePolicy::Fixed</enum>
991 <enum>QSizePolicy::Fixed</enum>
992 </property>
992 </property>
993 <property name="sizeHint" stdset="0">
993 <property name="sizeHint" stdset="0">
994 <size>
994 <size>
995 <width>50</width>
995 <width>50</width>
996 <height>20</height>
996 <height>20</height>
997 </size>
997 </size>
998 </property>
998 </property>
999 </spacer>
999 </spacer>
1000 </item>
1000 </item>
1001 <item>
1001 <item>
1002 <widget class="QLineEdit" name="txtTDpath">
1002 <widget class="QLineEdit" name="txtTDpath">
1003 <property name="enabled">
1003 <property name="enabled">
1004 <bool>true</bool>
1004 <bool>true</bool>
1005 </property>
1005 </property>
1006 <property name="readOnly">
1006 <property name="readOnly">
1007 <bool>true</bool>
1007 <bool>true</bool>
1008 </property>
1008 </property>
1009 </widget>
1009 </widget>
1010 </item>
1010 </item>
1011 <item>
1011 <item>
1012 <widget class="QPushButton" name="btnTDpath">
1012 <widget class="QPushButton" name="btnTDpath">
1013 <property name="enabled">
1013 <property name="enabled">
1014 <bool>true</bool>
1014 <bool>true</bool>
1015 </property>
1015 </property>
1016 <property name="text">
1016 <property name="text">
1017 <string>Temp Data Path</string>
1017 <string>Temp Data Path</string>
1018 </property>
1018 </property>
1019 </widget>
1019 </widget>
1020 </item>
1020 </item>
1021 </layout>
1021 </layout>
1022 </item>
1022 </item>
1023 <item>
1023 <item>
1024 <layout class="QHBoxLayout" name="horizontalLayout_19">
1024 <layout class="QHBoxLayout" name="horizontalLayout_19">
1025 <item>
1025 <item>
1026 <layout class="QVBoxLayout" name="verticalLayout_26">
1026 <layout class="QVBoxLayout" name="verticalLayout_26">
1027 <item>
1027 <item>
1028 <spacer name="horizontalSpacer_10">
1028 <spacer name="horizontalSpacer_10">
1029 <property name="orientation">
1029 <property name="orientation">
1030 <enum>Qt::Horizontal</enum>
1030 <enum>Qt::Horizontal</enum>
1031 </property>
1031 </property>
1032 <property name="sizeType">
1032 <property name="sizeType">
1033 <enum>QSizePolicy::Minimum</enum>
1033 <enum>QSizePolicy::Minimum</enum>
1034 </property>
1034 </property>
1035 <property name="sizeHint" stdset="0">
1035 <property name="sizeHint" stdset="0">
1036 <size>
1036 <size>
1037 <width>40</width>
1037 <width>40</width>
1038 <height>20</height>
1038 <height>20</height>
1039 </size>
1039 </size>
1040 </property>
1040 </property>
1041 </spacer>
1041 </spacer>
1042 </item>
1042 </item>
1043 <item>
1043 <item>
1044 <widget class="QLabel" name="lblSTATUS_2">
1044 <widget class="QLabel" name="lblSTATUS_2">
1045 <property name="sizePolicy">
1045 <property name="sizePolicy">
1046 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
1046 <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
1047 <horstretch>0</horstretch>
1047 <horstretch>0</horstretch>
1048 <verstretch>0</verstretch>
1048 <verstretch>0</verstretch>
1049 </sizepolicy>
1049 </sizepolicy>
1050 </property>
1050 </property>
1051 <property name="text">
1051 <property name="text">
1052 <string>STATUS</string>
1052 <string>STATUS</string>
1053 </property>
1053 </property>
1054 </widget>
1054 </widget>
1055 </item>
1055 </item>
1056 </layout>
1056 </layout>
1057 </item>
1057 </item>
1058 <item>
1058 <item>
1059 <layout class="QVBoxLayout" name="verticalLayout_27">
1059 <layout class="QVBoxLayout" name="verticalLayout_27">
1060 <item>
1060 <item>
1061 <widget class="QLabel" name="lblDevA_2">
1061 <widget class="QLabel" name="lblDevA_2">
1062 <property name="text">
1062 <property name="text">
1063 <string>DEV A</string>
1063 <string>DEV A</string>
1064 </property>
1064 </property>
1065 <property name="alignment">
1065 <property name="alignment">
1066 <set>Qt::AlignCenter</set>
1066 <set>Qt::AlignCenter</set>
1067 </property>
1067 </property>
1068 </widget>
1068 </widget>
1069 </item>
1069 </item>
1070 <item>
1070 <item>
1071 <widget class="QLineEdit" name="txtCHstatusA">
1071 <widget class="QLineEdit" name="txtCHstatusA">
1072 <property name="readOnly">
1072 <property name="readOnly">
1073 <bool>true</bool>
1073 <bool>true</bool>
1074 </property>
1074 </property>
1075 </widget>
1075 </widget>
1076 </item>
1076 </item>
1077 </layout>
1077 </layout>
1078 </item>
1078 </item>
1079 <item>
1079 <item>
1080 <layout class="QVBoxLayout" name="verticalLayout_28">
1080 <layout class="QVBoxLayout" name="verticalLayout_28">
1081 <item>
1081 <item>
1082 <widget class="QLabel" name="lblDevB_2">
1082 <widget class="QLabel" name="lblDevB_2">
1083 <property name="text">
1083 <property name="text">
1084 <string>DEV B</string>
1084 <string>DEV B</string>
1085 </property>
1085 </property>
1086 <property name="alignment">
1086 <property name="alignment">
1087 <set>Qt::AlignCenter</set>
1087 <set>Qt::AlignCenter</set>
1088 </property>
1088 </property>
1089 </widget>
1089 </widget>
1090 </item>
1090 </item>
1091 <item>
1091 <item>
1092 <widget class="QLineEdit" name="txtCHstatusB">
1092 <widget class="QLineEdit" name="txtCHstatusB">
1093 <property name="readOnly">
1093 <property name="readOnly">
1094 <bool>true</bool>
1094 <bool>true</bool>
1095 </property>
1095 </property>
1096 </widget>
1096 </widget>
1097 </item>
1097 </item>
1098 </layout>
1098 </layout>
1099 </item>
1099 </item>
1100 <item>
1100 <item>
1101 <layout class="QVBoxLayout" name="verticalLayout_29">
1101 <layout class="QVBoxLayout" name="verticalLayout_29">
1102 <item>
1102 <item>
1103 <widget class="QLabel" name="lblDevC_2">
1103 <widget class="QLabel" name="lblDevC_2">
1104 <property name="text">
1104 <property name="text">
1105 <string>DEV C</string>
1105 <string>DEV C</string>
1106 </property>
1106 </property>
1107 <property name="alignment">
1107 <property name="alignment">
1108 <set>Qt::AlignCenter</set>
1108 <set>Qt::AlignCenter</set>
1109 </property>
1109 </property>
1110 </widget>
1110 </widget>
1111 </item>
1111 </item>
1112 <item>
1112 <item>
1113 <widget class="QLineEdit" name="txtCHstatusC">
1113 <widget class="QLineEdit" name="txtCHstatusC">
1114 <property name="readOnly">
1114 <property name="readOnly">
1115 <bool>true</bool>
1115 <bool>true</bool>
1116 </property>
1116 </property>
1117 </widget>
1117 </widget>
1118 </item>
1118 </item>
1119 </layout>
1119 </layout>
1120 </item>
1120 </item>
1121 <item>
1121 <item>
1122 <layout class="QVBoxLayout" name="verticalLayout_30">
1122 <layout class="QVBoxLayout" name="verticalLayout_30">
1123 <item>
1123 <item>
1124 <widget class="QLabel" name="lblDevD_2">
1124 <widget class="QLabel" name="lblDevD_2">
1125 <property name="text">
1125 <property name="text">
1126 <string>DEV D</string>
1126 <string>DEV D</string>
1127 </property>
1127 </property>
1128 <property name="alignment">
1128 <property name="alignment">
1129 <set>Qt::AlignCenter</set>
1129 <set>Qt::AlignCenter</set>
1130 </property>
1130 </property>
1131 </widget>
1131 </widget>
1132 </item>
1132 </item>
1133 <item>
1133 <item>
1134 <widget class="QLineEdit" name="txtCHstatusD">
1134 <widget class="QLineEdit" name="txtCHstatusD">
1135 <property name="readOnly">
1135 <property name="readOnly">
1136 <bool>true</bool>
1136 <bool>true</bool>
1137 </property>
1137 </property>
1138 </widget>
1138 </widget>
1139 </item>
1139 </item>
1140 </layout>
1140 </layout>
1141 </item>
1141 </item>
1142 </layout>
1142 </layout>
1143 </item>
1143 </item>
1144 <item>
1144 <item>
1145 <layout class="QHBoxLayout" name="horizontalLayout_20">
1145 <layout class="QHBoxLayout" name="horizontalLayout_20">
1146 <item>
1146 <item>
1147 <spacer name="horizontalSpacer_12">
1147 <spacer name="horizontalSpacer_12">
1148 <property name="orientation">
1148 <property name="orientation">
1149 <enum>Qt::Horizontal</enum>
1149 <enum>Qt::Horizontal</enum>
1150 </property>
1150 </property>
1151 <property name="sizeType">
1151 <property name="sizeType">
1152 <enum>QSizePolicy::Minimum</enum>
1152 <enum>QSizePolicy::Minimum</enum>
1153 </property>
1153 </property>
1154 <property name="sizeHint" stdset="0">
1154 <property name="sizeHint" stdset="0">
1155 <size>
1155 <size>
1156 <width>50</width>
1156 <width>50</width>
1157 <height>20</height>
1157 <height>20</height>
1158 </size>
1158 </size>
1159 </property>
1159 </property>
1160 </spacer>
1160 </spacer>
1161 </item>
1161 </item>
1162 <item>
1162 <item>
1163 <spacer name="horizontalSpacer_15">
1163 <spacer name="horizontalSpacer_15">
1164 <property name="orientation">
1164 <property name="orientation">
1165 <enum>Qt::Horizontal</enum>
1165 <enum>Qt::Horizontal</enum>
1166 </property>
1166 </property>
1167 <property name="sizeHint" stdset="0">
1167 <property name="sizeHint" stdset="0">
1168 <size>
1168 <size>
1169 <width>40</width>
1169 <width>40</width>
1170 <height>20</height>
1170 <height>20</height>
1171 </size>
1171 </size>
1172 </property>
1172 </property>
1173 </spacer>
1173 </spacer>
1174 </item>
1174 </item>
1175 <item>
1175 <item>
1176 <widget class="QPushButton" name="btnCHstart">
1176 <widget class="QPushButton" name="btnCHstart">
1177 <property name="enabled">
1177 <property name="enabled">
1178 <bool>false</bool>
1178 <bool>false</bool>
1179 </property>
1179 </property>
1180 <property name="text">
1180 <property name="text">
1181 <string>START</string>
1181 <string>START</string>
1182 </property>
1182 </property>
1183 </widget>
1183 </widget>
1184 </item>
1184 </item>
1185 </layout>
1185 </layout>
1186 </item>
1186 </item>
1187 </layout>
1187 </layout>
1188 </widget>
1188 </widget>
1189 </widget>
1189 </widget>
1190 </item>
1190 </item>
1191 <item>
1191 <item>
1192 <widget class="QTextEdit" name="txtInfo">
1192 <widget class="QTextEdit" name="txtInfo">
1193 <property name="readOnly">
1193 <property name="readOnly">
1194 <bool>true</bool>
1194 <bool>true</bool>
1195 </property>
1195 </property>
1196 </widget>
1196 </widget>
1197 </item>
1197 </item>
1198 <item>
1198 <item>
1199 <widget class="QLineEdit" name="txtProgress">
1199 <widget class="QLineEdit" name="txtProgress">
1200 <property name="sizePolicy">
1200 <property name="sizePolicy">
1201 <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
1201 <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
1202 <horstretch>0</horstretch>
1202 <horstretch>0</horstretch>
1203 <verstretch>0</verstretch>
1203 <verstretch>0</verstretch>
1204 </sizepolicy>
1204 </sizepolicy>
1205 </property>
1205 </property>
1206 </widget>
1206 </widget>
1207 </item>
1207 </item>
1208 <item>
1208 <item>
1209 <layout class="QHBoxLayout" name="horizontalLayout_2">
1209 <layout class="QHBoxLayout" name="horizontalLayout_2">
1210 <property name="sizeConstraint">
1210 <property name="sizeConstraint">
1211 <enum>QLayout::SetDefaultConstraint</enum>
1211 <enum>QLayout::SetDefaultConstraint</enum>
1212 </property>
1212 </property>
1213 <item>
1213 <item>
1214 <widget class="QPushButton" name="btnGbkp">
1214 <widget class="QPushButton" name="btnGbkp">
1215 <property name="enabled">
1215 <property name="enabled">
1216 <bool>false</bool>
1216 <bool>false</bool>
1217 </property>
1217 </property>
1218 <property name="text">
1218 <property name="text">
1219 <string>Generate Bkp</string>
1219 <string>Generate Bkp</string>
1220 </property>
1220 </property>
1221 </widget>
1221 </widget>
1222 </item>
1222 </item>
1223 <item>
1223 <item>
1224 <widget class="QPushButton" name="btnRestart">
1224 <widget class="QPushButton" name="btnRestart">
1225 <property name="enabled">
1225 <property name="enabled">
1226 <bool>false</bool>
1226 <bool>false</bool>
1227 </property>
1227 </property>
1228 <property name="text">
1228 <property name="text">
1229 <string>Restart</string>
1229 <string>Restart</string>
1230 </property>
1230 </property>
1231 </widget>
1231 </widget>
1232 </item>
1232 </item>
1233 <item>
1233 <item>
1234 <widget class="QPushButton" name="btnStartburn">
1234 <widget class="QPushButton" name="btnStartburn">
1235 <property name="enabled">
1235 <property name="enabled">
1236 <bool>false</bool>
1236 <bool>false</bool>
1237 </property>
1237 </property>
1238 <property name="text">
1238 <property name="text">
1239 <string>Start Burn</string>
1239 <string>Start Burn</string>
1240 </property>
1240 </property>
1241 </widget>
1241 </widget>
1242 </item>
1242 </item>
1243 <item>
1243 <item>
1244 <widget class="QPushButton" name="btnStopburn">
1244 <widget class="QPushButton" name="btnStopburn">
1245 <property name="enabled">
1245 <property name="enabled">
1246 <bool>false</bool>
1246 <bool>false</bool>
1247 </property>
1247 </property>
1248 <property name="text">
1248 <property name="text">
1249 <string>Stop Burn</string>
1249 <string>Stop Burn</string>
1250 </property>
1250 </property>
1251 </widget>
1251 </widget>
1252 </item>
1252 </item>
1253 </layout>
1253 </layout>
1254 </item>
1254 </item>
1255 </layout>
1255 </layout>
1256 </widget>
1256 </widget>
1257 <widget class="QMenuBar" name="menubar">
1257 <widget class="QMenuBar" name="menubar">
1258 <property name="geometry">
1258 <property name="geometry">
1259 <rect>
1259 <rect>
1260 <x>0</x>
1260 <x>0</x>
1261 <y>0</y>
1261 <y>0</y>
1262 <width>824</width>
1262 <width>824</width>
1263 <height>25</height>
1263 <height>25</height>
1264 </rect>
1264 </rect>
1265 </property>
1265 </property>
1266 <widget class="QMenu" name="menuFile">
1266 <widget class="QMenu" name="menuFile">
1267 <property name="title">
1267 <property name="title">
1268 <string>File</string>
1268 <string>File</string>
1269 </property>
1269 </property>
1270 <addaction name="actionQuit"/>
1270 <addaction name="actionQuit"/>
1271 </widget>
1271 </widget>
1272 <widget class="QMenu" name="menuHelp">
1272 <widget class="QMenu" name="menuHelp">
1273 <property name="title">
1273 <property name="title">
1274 <string>Help</string>
1274 <string>Help</string>
1275 </property>
1275 </property>
1276 <addaction name="actionAbout"/>
1276 <addaction name="actionAbout"/>
1277 </widget>
1277 </widget>
1278 <widget class="QMenu" name="menuParameters">
1278 <widget class="QMenu" name="menuParameters">
1279 <property name="title">
1279 <property name="title">
1280 <string>Parameters</string>
1280 <string>Parameters</string>
1281 </property>
1281 </property>
1282 <addaction name="actionChange_Parameters"/>
1282 <addaction name="actionChange_Parameters"/>
1283 </widget>
1283 </widget>
1284 <addaction name="menuFile"/>
1284 <addaction name="menuFile"/>
1285 <addaction name="menuParameters"/>
1285 <addaction name="menuParameters"/>
1286 <addaction name="menuHelp"/>
1286 <addaction name="menuHelp"/>
1287 </widget>
1287 </widget>
1288 <widget class="QStatusBar" name="statusbar"/>
1288 <widget class="QStatusBar" name="statusbar"/>
1289 <action name="actionChange_Parameters">
1289 <action name="actionChange_Parameters">
1290 <property name="enabled">
1290 <property name="enabled">
1291 <bool>false</bool>
1291 <bool>false</bool>
1292 </property>
1292 </property>
1293 <property name="text">
1293 <property name="text">
1294 <string>Change Parameters</string>
1294 <string>Change Parameters</string>
1295 </property>
1295 </property>
1296 </action>
1296 </action>
1297 <action name="actionQuit">
1297 <action name="actionQuit">
1298 <property name="text">
1298 <property name="text">
1299 <string>Quit</string>
1299 <string>Quit</string>
1300 </property>
1300 </property>
1301 </action>
1301 </action>
1302 <action name="actionAbout">
1302 <action name="actionAbout">
1303 <property name="text">
1303 <property name="text">
1304 <string>About</string>
1304 <string>About</string>
1305 </property>
1305 </property>
1306 </action>
1306 </action>
1307 </widget>
1307 </widget>
1308 <tabstops>
1308 <tabstops>
1309 <tabstop>txtDpath</tabstop>
1309 <tabstop>txtDpath</tabstop>
1310 <tabstop>btnDpath</tabstop>
1310 <tabstop>btnDpath</tabstop>
1311 <tabstop>txtRpath</tabstop>
1311 <tabstop>txtRpath</tabstop>
1312 <tabstop>btnRpath</tabstop>
1312 <tabstop>btnRpath</tabstop>
1313 <tabstop>lstDtype</tabstop>
1313 <tabstop>lstDtype</tabstop>
1314 <tabstop>txtDtype</tabstop>
1314 <tabstop>txtDtype</tabstop>
1315 <tabstop>txtElabel</tabstop>
1315 <tabstop>txtElabel</tabstop>
1316 <tabstop>lstStartDay</tabstop>
1316 <tabstop>lstStartDay</tabstop>
1317 <tabstop>lstStopDay</tabstop>
1317 <tabstop>lstStopDay</tabstop>
1318 <tabstop>lstDcapacity</tabstop>
1318 <tabstop>lstDcapacity</tabstop>
1319 <tabstop>tabWidget</tabstop>
1319 <tabstop>tabWidget</tabstop>
1320 <tabstop>btnGbkp</tabstop>
1320 <tabstop>btnGbkp</tabstop>
1321 <tabstop>btnRestart</tabstop>
1321 <tabstop>btnRestart</tabstop>
1322 <tabstop>btnStartburn</tabstop>
1322 <tabstop>btnStartburn</tabstop>
1323 <tabstop>btnStopburn</tabstop>
1323 <tabstop>btnStopburn</tabstop>
1324 </tabstops>
1324 </tabstops>
1325 <resources/>
1325 <resources/>
1326 <connections>
1326 <connections>
1327 <connection>
1327 <connection>
1328 <sender>actionQuit</sender>
1328 <sender>actionQuit</sender>
1329 <signal>triggered()</signal>
1329 <signal>triggered()</signal>
1330 <receiver>MainWindow</receiver>
1330 <receiver>MainWindow</receiver>
1331 <slot>close()</slot>
1331 <slot>close()</slot>
1332 <hints>
1332 <hints>
1333 <hint type="sourcelabel">
1333 <hint type="sourcelabel">
1334 <x>-1</x>
1334 <x>-1</x>
1335 <y>-1</y>
1335 <y>-1</y>
1336 </hint>
1336 </hint>
1337 <hint type="destinationlabel">
1337 <hint type="destinationlabel">
1338 <x>306</x>
1338 <x>306</x>
1339 <y>358</y>
1339 <y>358</y>
1340 </hint>
1340 </hint>
1341 </hints>
1341 </hints>
1342 </connection>
1342 </connection>
1343 <connection>
1343 <connection>
1344 <sender>chkDevD</sender>
1344 <sender>chkDevD</sender>
1345 <signal>toggled(bool)</signal>
1345 <signal>toggled(bool)</signal>
1346 <receiver>grpDevD</receiver>
1346 <receiver>grpDevD</receiver>
1347 <slot>setEnabled(bool)</slot>
1347 <slot>setEnabled(bool)</slot>
1348 <hints>
1348 <hints>
1349 <hint type="sourcelabel">
1349 <hint type="sourcelabel">
1350 <x>119</x>
1350 <x>119</x>
1351 <y>103</y>
1351 <y>103</y>
1352 </hint>
1352 </hint>
1353 <hint type="destinationlabel">
1353 <hint type="destinationlabel">
1354 <x>119</x>
1354 <x>119</x>
1355 <y>103</y>
1355 <y>103</y>
1356 </hint>
1356 </hint>
1357 </hints>
1357 </hints>
1358 </connection>
1358 </connection>
1359 <connection>
1359 <connection>
1360 <sender>chkDevB</sender>
1360 <sender>chkDevB</sender>
1361 <signal>toggled(bool)</signal>
1361 <signal>toggled(bool)</signal>
1362 <receiver>grpDevB</receiver>
1362 <receiver>grpDevB</receiver>
1363 <slot>setEnabled(bool)</slot>
1363 <slot>setEnabled(bool)</slot>
1364 <hints>
1364 <hints>
1365 <hint type="sourcelabel">
1365 <hint type="sourcelabel">
1366 <x>119</x>
1366 <x>119</x>
1367 <y>103</y>
1367 <y>103</y>
1368 </hint>
1368 </hint>
1369 <hint type="destinationlabel">
1369 <hint type="destinationlabel">
1370 <x>119</x>
1370 <x>119</x>
1371 <y>103</y>
1371 <y>103</y>
1372 </hint>
1372 </hint>
1373 </hints>
1373 </hints>
1374 </connection>
1374 </connection>
1375 <connection>
1375 <connection>
1376 <sender>chkDevC</sender>
1376 <sender>chkDevC</sender>
1377 <signal>toggled(bool)</signal>
1377 <signal>toggled(bool)</signal>
1378 <receiver>grpDevC</receiver>
1378 <receiver>grpDevC</receiver>
1379 <slot>setEnabled(bool)</slot>
1379 <slot>setEnabled(bool)</slot>
1380 <hints>
1380 <hints>
1381 <hint type="sourcelabel">
1381 <hint type="sourcelabel">
1382 <x>119</x>
1382 <x>119</x>
1383 <y>103</y>
1383 <y>103</y>
1384 </hint>
1384 </hint>
1385 <hint type="destinationlabel">
1385 <hint type="destinationlabel">
1386 <x>119</x>
1386 <x>119</x>
1387 <y>103</y>
1387 <y>103</y>
1388 </hint>
1388 </hint>
1389 </hints>
1389 </hints>
1390 </connection>
1390 </connection>
1391 <connection>
1391 <connection>
1392 <sender>chkDevA</sender>
1392 <sender>chkDevA</sender>
1393 <signal>toggled(bool)</signal>
1393 <signal>toggled(bool)</signal>
1394 <receiver>grpDevA</receiver>
1394 <receiver>grpDevA</receiver>
1395 <slot>setEnabled(bool)</slot>
1395 <slot>setEnabled(bool)</slot>
1396 <hints>
1396 <hints>
1397 <hint type="sourcelabel">
1397 <hint type="sourcelabel">
1398 <x>105</x>
1398 <x>105</x>
1399 <y>79</y>
1399 <y>79</y>
1400 </hint>
1400 </hint>
1401 <hint type="destinationlabel">
1401 <hint type="destinationlabel">
1402 <x>106</x>
1402 <x>106</x>
1403 <y>103</y>
1403 <y>103</y>
1404 </hint>
1404 </hint>
1405 </hints>
1405 </hints>
1406 </connection>
1406 </connection>
1407 </connections>
1407 </connections>
1408 </ui>
1408 </ui>
General Comments 0
You need to be logged in to leave comments. Login now