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