##// END OF EJS Templates
falta la prueba
ralonso -
r59:60
parent child
Show More
@@ -1,206 +1,217
1 1 # -*- coding: utf-8 -*-
2 2
3 3 #class BKmanager:
4 4 # def __init__(self):
5 5
6 6 from subprocess import *
7 7 import sys
8 8 import os
9 9 import subprocess
10 10 import commands
11
12
13 #Entero a cadena agregando ceros delante
11 import shutil
12
13 #--------------------------------------------- Entero a cadena agregando ceros delante -------------------------------------------------
14
14 15 def i2s(var_n, var_length=4):
15 16 var_n2=str(var_n)
16 17 while len(var_n2) < var_length:
17 18 var_n2 = "0"+var_n2
18 19 return var_n2
19 20
20 21
21 #Crea directorios en la ruta indicada
22 def make_dirs(list_dirs, self):
23 var_cmd="mkdir -p "+str(self.var_Rpath)
24 for var_dir in list_dirs:
25 var_output=commands.getstatusoutput(var_cmd+'/'+var_dir)[0]
26 if var_output != 0:
27 self.txtInfo.append("Error al crear el directorio "+var_dir+", output_error:" + str(var_output))
28 return False
29 self.txtInfo.append('Carpetas creadas correctamente')
30 return True
31
32
33 #Se verifica que la ruta exista y sea un directorio
22 #----------------------------------------- Se verifica que la ruta exista y sea un directorio -------------------------------------------------
23
34 24 def dir_exists(var_dir, self):
35 25 if os.path.isdir(var_dir):
36 26 self.txtInfo.append("Ruta valida, sin error:" + str(var_dir))
37 27 return True
38 28 else:
39 29 self.txtInfo.append("Ruta no valida, output_error:" + str(var_dir))
40 30 return False
41 31
42 32
43 #Se buscan los archivos del tipo especificado
33 #-------------------------------- Se buscan los archivos del tipo especificado y se cargan las fechas -----------------------------
34
44 35 def load_days(self):
45 36
46 37 self.var_list=[]
47 38 self.lstStartDay.clear()
48 39 self.lstStopDay.clear()
49 40
50 41 if self.statusDpath == False:
51 42 self.btnGbkp.setEnabled(False)
52 43 return
53 44
54 45 if self.var_Dtype == '':
55 46 return
56 47
57 48 var_cmd="find " + str(self.var_Dpath) + " -name *."+ str(self.var_Dtype) +" | awk -F/ '{print substr($NF,2,7)}' | sort| uniq"
58 49 output=commands.getstatusoutput(var_cmd)[1]
59 50
60 51 #Si no se encuentra ningun archivo
61 52 if len(output) == 0:
62 53 self.txtInfo.append("No se encontraron archivos")
63 54 self.btnGbkp.setEnabled(False)
64 55 return
65 56
66 57 #Se cargan las listas para seleccionar StartDay y StopDay (QComboBox)
67 58 for i in range(0, (len(output)+1)/8):
68 59 self.var_list.append(output[8*i:8*(i+1)-1])
69 60
70 61 for i in self.var_list:
71 62 self.lstStartDay.addItem(i)
72 63 self.lstStopDay.addItem(i)
73 64 self.lstStopDay.setCurrentIndex(self.lstStartDay.count()-1)
74 65
75 66 get_sub_list(self)
76 67 self.btnGbkp.setEnabled(True)
77
78
79 #Verifica que los parametros
80 def validate_parameters(self):
81 #Verifica que las rutas sean validas
82 if self.statusRpath == False:
83 self.txtInfo.append("Ruta de proyecto no valida")
84 return False
85
86 #Verifica la etiqueta
87 if len(self.var_Elabel) == 0:
88 self.txtInfo.append("Debe ingresar el nombre de la etiqueta")
89 return False
90
91 return True
92
93
94 #Obtiene el rango de las fechas seleccionadas
68
69
70 #-------------------------------------------------- Obtiene el rango de las fechas seleccionadas -----------------------------------------
71
95 72 def get_sub_list(self):
96 73 self.var_sublist=[]
97 74 for i in self.var_list[self.lstStartDay.currentIndex():self.lstStartDay.currentIndex() + self.lstStopDay.currentIndex()+1]:
98 75 self.var_sublist.append(i)
99 76 if len(self.var_sublist) == 0:
100 self.txtInfo.append("No existen archivos encontrados")
101
102
103 #Busca los archivos con los parametros de busqueda
77 self.txtInfo.append("No existen archivos encontrados")
78
79
80 #----------------------------------------------------- Verifica los parametros faltantes -----------------------------------------------------------
81
82 def validate_parameters(self):
83 #Verifica que las ruta del proyecto sea valida
84 if self.statusRpath == False:
85 self.txtInfo.append("Ruta de proyecto no valida")
86 return False
87
88 #Verifica la etiqueta
89 if len(self.var_Elabel) == 0:
90 self.txtInfo.append("Debe ingresar el nombre de la etiqueta")
91 return False
92
93 return True
94
95
96 #------------------------------------------------- Crea directorios en la ruta indicada -----------------------------------------------------------
97
98 def make_dirs(list_dirs, self):
99
100 for var_dir in list_dirs:
101 shutil.rmtree(self.var_Rpath+'/'+var_dir, True)
102 var_output=commands.getstatusoutput("mkdir -p "+self.var_Rpath+'/'+var_dir)[0]
103 if var_output != 0:
104 self.txtInfo.append("Error al crear el directorio "+var_dir+", output_error:" + str(var_output))
105 return False
106 self.txtInfo.append('Carpetas creadas correctamente')
107 return True
108
109
110 #-------------------------------------------- Busca los archivos con los parametros de busqueda ---------------------------------------
111
104 112 def list_files(self):
105 113 var_files_list=[]
106 114 for var_doy in self.var_sublist:
107 115 var_cmd="find " + str(self.var_Dpath) + " -name ?"+var_doy+"???."+ str(self.var_Dtype) + " |sort"
108 116 var_output=commands.getstatusoutput(var_cmd)[1]
109 117 for var_file in var_output.split():
110 118 var_files_list.append(var_file) #Almacena cada archivo en la lista
111 119 return var_files_list
112 120
113 121
114 #Genera la lista de archivos .dat que contienen los archivos a grabar en cada DVD
122 #--------------- Genera la lista de archivos .dat que contienen los archivos a grabar en cada DVD -----------------------
123
115 124 def make_files_dat(var_files_list, self):
116 125 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
117 126 var_n=1 #Numero del DVD actual
118 127 var_tmp=0 #Se usa para acumular el tamaΓ±o de los archivos de la lista
119 128 var_files_list_2=[] #Se usa para almacenar la lista de archivos agrbar en cada DVD
120 129
121 130 for i in var_files_list: #Se asignan en i los archivos de la lista
122 self.txtInfo.append(i)
131
123 132 var_size_i=os.path.getsize(i)/1024+1 #tamaΓ±o en KB del archivo de la lista, se suma 1 KB para evitar problemas al momento de sumar
124 133 var_tmp += var_size_i #Se acumulan el tamaΓ±o de los archivos de la lista
125 134
126 135 #Si el tamaΓ±o acumulado es mayor que el de el DVD
127 136 if var_tmp > (self.var_Dcapacity * 1024):
128 137 var_tmp -= var_size_i #se quita el tamaΓ±o sumado para mostrar el tamaΓ±o real
129 138 #se crea un archivo con numeral en el sufijo y extension .dat
130 139 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
131 140 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
132 141 for line in var_files_list_2:
133 142 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
134 143 var_file.write(var_tmp_path+'='+line+'\n')
135 144 var_file.close()
136 145
137 146 var_tmp = var_size_i #Se asigna a la variable el tamaΓ±o del archivo actual
138 147 var_files_list_2=[] #Se reinicia la lista
139 148 var_n += 1
140 149 var_files_list_2.append(i)
141 150
142 151 #se crea un archivo con numeral en el sufijo y extension .dat
143 152 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
144 153 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
145 154 for line in var_files_list_2:
146 155 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
147 156 var_file.write(var_tmp_path+'='+line+'\n')
148 157 var_file.close()
149
158
159 self.txtInfo.append("Archivos .dat creados")
150 160 return var_n
151 161
152 162
153 #Genera los archivos .print con los cuales se creara los postscript
163 #------------------------------ Genera los archivos .print con los cuales se creara los postscript -----------------------------------
164
154 165 def make_files_print(self):
155 166
156 167 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
157 168
158 169 # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .print
159 for var_n in range(1, self.var_n_discs + 1):
170 for var_n in range(1, self.var_Discs + 1):
160 171 #se abren los archivos .dat en modo lectura
161 172 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","r")
162 173 lines=var_file.readlines() # Se lee las lineas en el archivo y se almacenan en la lista
163 174 # Se crea el archivo .print
164 175 var_file_print = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".print","w")
165 var_file_print.write(self.var_Elabel+" "+i2s(var_n)+"/"+i2s(self.var_n_discs)+"\n")
176 var_file_print.write(self.var_Elabel+" "+i2s(var_n)+"/"+i2s(self.var_Discs)+"\n")
166 177 var_file_print.write("Year Doy Folder Set Time range\n")
167 178
168 179 var_first_folder = lines[0].split('=')[0]
169 180 var_first_file = (lines[0].split('=')[1])[:-1]
170 181 var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1]
171 182
172 183 for j in range(1, len(lines)-1):
173 184 var_tmp_folder = lines[j].split('=')[0]
174 185 var_tmp_file = (lines[j].split('=')[1])[:-1]
175 186
176 187 # Si el subfolder superior o la fecha del archivo cambia se genera una nueva linea
177 188 if (var_tmp_folder != var_first_folder) or (var_tmp_file[0:-5] != var_first_file[0:-5]):
178 189 var_last_file = (lines[j-1].split('=')[1])[:-1]
179 190 var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1]
180 191 # Si el archivo se grabara directamente en la / del DVD y no en un /directorio/
181 192 # se usa la etiqueta para indicar la parte de la etiqueta donde va el subdirectorio
182 193 if var_first_folder == '/':
183 194 var_folder = self.var_Elabel
184 195 else:
185 196 var_folder = var_first_folder.split('/')[-2]
186 197
187 198 var_file_print.write(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" "
188 199 +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n")
189 200
190 201 var_first_folder = lines[j].split('=')[0]
191 202 var_first_file = (lines[j].split('=')[1])[:-1]
192 203 var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1]
193 204
194 205 var_last_file = (lines[-1].split('=')[1])[:-1]
195 206 var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1]
196 207
197 208 if var_first_folder == '/':
198 var_folder = self.txtElabel.text()
209 var_folder = self.var_Elabel
199 210 else:
200 211 var_folder = var_first_folder.split('/')[-2]
201 212
202 213 var_file_print.write(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" "
203 214 +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n")
204 215
205 216 var_file.close()
206 217 var_file_print.close()
@@ -1,115 +1,151
1 1 # -*- coding: utf-8 -*-
2 2
3 3
4 4 from subprocess import *
5 5 import sys
6 6 import os
7 7 import subprocess
8 8 import commands
9 9
10 #----------------------------------------------------- Deteccion de los dispositivos de grabacion ---------------------------------------------------------------
10 11
11 12 def detect_devices(self):
12 13 """
13 14 Deteccion de los dispositvos de grabacion
14 15 """
15 16 #var_cmd="wodim --devices | grep /dev/ | awk -F\' '{print $2}'" #Funciona en consola pero no en python ΒΏ?
16 17 var_cmd="wodim --devices | grep /dev/ | awk '{print $2}' | awk -F= '{print $2}'"
17 18 var_output = commands.getstatusoutput(var_cmd)
18 19 if var_output[0] != 0:
19 20 self.txtInfo.append("No se pudo encontrar los dispositivos de grabacion, output_error:" + str(var_output))
20 21 else:
21 22 self.txtInfo.append("dispositivos encontrados")
22 23 var_devices = var_output[1].split('\n')
23 24
24 25 var_tmp=[]
25 26 for i in range(0, 4):
26 27 if i < len(var_devices):
27 28 var_len = len(var_devices[i])
28 29 var_tmp.append(var_devices[i][1:var_len - 1])
29 30 else:
30 31 var_tmp.append('')
31 32
32 33 #Se escriben los dispostivos correspodientes, si existen
33 34 self.txtDeviceA.setText(str(var_tmp[0]))
34 35 self.txtDeviceB.setText(str(var_tmp[1]))
35 36 self.txtDeviceC.setText(str(var_tmp[2]))
36 37 self.txtDeviceD.setText(str(var_tmp[3]))
37 38 #Se desactivan los que no existen
38 39 if len(var_tmp[0]) == 0 :
39 40 self.chkDevA.setChecked(False)
40 41 self.chkDevA.setEnabled(False)
41 42 if len(var_tmp[1]) == 0 :
42 43 self.chkDevB.setChecked(False)
43 44 self.chkDevB.setEnabled(False)
44 45 if len(var_tmp[2]) == 0 :
45 46 self.chkDevC.setChecked(False)
46 47 self.chkDevC.setEnabled(False)
47 48 if len(var_tmp[3]) == 0 :
48 49 self.chkDevD.setChecked(False)
49 50 self.chkDevD.setEnabled(False)
50 51
52
53 #----------------------------------- listado de los dispositivos de grabacion seleccionados --------------------------------------------
54
55 def selected_devices(self):
56 self.var_devices=[]
57 if self.chkDevA.isChecked():
58 self.var_devices.append(str(self.txtDeviceA.text()))
59 if self.chkDevB.isChecked():
60 self.var_devices.append(str(self.txtDeviceB.text()))
61 if self.chkDevC.isChecked():
62 self.var_devices.append(str(self.txtDeviceC.text()))
63 if self.chkDevD.isChecked():
64 self.var_devices.append(str(self.txtDeviceD.text()))
65
66 if len(self.var_devices) == 0:
67 return False
68 else:
69 return True
70
71
72 #----------------------------------------------------- Inicializacion para pruebas---------------------------------------------------------------
73
51 74 def set_parameters_test(self):
52 75 """
53 76 Se usa para inicializar ciertos parametros para pruebas
54 77 """
55 78 self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS')
56 79 self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager')
57 80 self.txtElabel.setText('EW_DRIFTS_pruebas')
58 81 self.lstDcapacity.setCurrentIndex(4)
59 82 self.txtDcapacity.setValue(250.0)
60 83 self.txtDcapacity.setReadOnly(False)
61 84
62 85
86 #----------------------------------------------------- crea parameters.conf ---------------------------------------------------------------
87
63 88 def make_parameters_conf(self):
64 89 var_file = open("parameters.conf","w")
65 var_file.write(self.var_Dpath+"\n") #0
66 var_file.write(self.var_Rpath+"\n") #1
67 var_file.write(str(self.var_lstDtype)+"\n") #2
68 var_file.write(self.var_Dtype+"\n") #3
69 var_file.write(self.var_Elabel+"\n") #4
70 var_file.write(str(self.var_Copys)+"\n") #5
71 var_file.write(str(self.var_lstDcapacity)+"\n") #6
72 var_file.write(str(self.var_Dcapacity)+"\n") #7
73 var_file.write(str(self.var_n_discs)) #8
90 var_file.write(self.var_Dpath+"\n") #0 Ruta de los datos
91 var_file.write(self.var_Rpath+"\n") #1 Ruta del proyecto
92 var_file.write(str(self.var_lstDtype)+"\n") #2 opcion Data Type
93 var_file.write(self.var_Dtype+"\n") #3 extension Data Type
94 var_file.write(self.var_Elabel+"\n") #4 etiqueta
95 var_file.write(str(self.var_Copys)+"\n") #5 Numero de copias
96 var_file.write(str(self.var_lstDcapacity)+"\n") #6 opcion Device Capacity
97 var_file.write(str(self.var_Dcapacity)+"\n") #7 tamaΓ±o Device Capacity
98 var_file.write(str(self.var_Discs)+"\n") #8 Numero de discos a grabar
99 # var_file.write(str(self.lstStartDay.currentIndex())+"\n") #9 Indice fecha inicial
100 # var_file.write(str(self.lstStopDay.currentIndex())+"\n") #10 Indice fecha final
101
74 102 var_file.close()
75 103
104 #----------------------------------------------------- carga parameters.conf ---------------------------------------------------------------
76 105
77 106 def get_parameters_conf(self):
78 107 var_file = open("parameters.conf","r")
79 108 lines = var_file.readlines()
80 109 self.txtDpath.setText(lines[0][:-1]) #0
81 110 self.txtRpath.setText(lines[1][:-1]) #1
82 111 self.lstDtype.setCurrentIndex(int(lines[2])) #2
83 112 self.txtDtype.setText(lines[3][:-1]) #3
84 113 self.txtElabel.setText(lines[4][:-1]) #4
85 114 self.txtCopys.setValue(int(lines[5][:-1])) #5
86 115 self.lstDcapacity.setCurrentIndex(int(lines[6])) #6
87 116 self.txtDcapacity.setValue(float(lines[7])) #7
88 self.var_n_discs = int(lines[8]) # 8
117 self.var_Discs = int(lines[8]) #8
118 # var_StartDay = int(lines[6]) #9
119 # var_StopDay = int(lines[7]) #10
89 120 var_file.close()
90 121
91 122
123
124 #-------------------------- actualiza el valor de las variables con los parametros seleccionados -----------------------------
125
92 126 def set_vars(self):
93 self.var_Dpath = self.txtDpath.text() #0
94 self.var_Rpath = self.txtRpath.text() #1
127 self.var_Dpath = str(self.txtDpath.text()) #0
128 self.var_Rpath = str(self.txtRpath.text()) #1
95 129 self.var_lstDtype = self.lstDtype.currentIndex() #2
96 self.var_Dtype = self.txtDtype.text() #3
97 self.var_Elabel = self.txtElabel.text() #4
130 self.var_Dtype = str(self.txtDtype.text()) #3
131 self.var_Elabel = str(self.txtElabel.text()) #4
98 132 self.var_Copys = self.txtCopys.value() #5
99 133 self.var_lstDcapacity = self.lstDcapacity.currentIndex() #6
100 134 self.var_Dcapacity = self.txtDcapacity.value() #7
135 self.var_Discs = self.var_Discs #8
101 136
137 #---------------------------------------------- Habilitacion y deshabilitacion de items -------------------------------------------------------
102 138
103 139 def enabled_items1(var_bool, self):
104 140 self.tabParameters.setEnabled(not(var_bool))
105 141 self.lstDcapacity.setEnabled(not(var_bool))
106 142 self.txtDcapacity.setEnabled(not(var_bool))
107 143 self.btnGbkp.setEnabled(not(var_bool))
108 144 self.btnRestart.setEnabled(var_bool)
109 145 self.btnStartburn.setEnabled(var_bool)
110 146
111 147
112 148 def enabled_items2(var_bool, self):
113 149 self.btnRestart.setEnabled(not(var_bool))
114 150 self.btnStartburn.setEnabled(not(var_bool))
115 151 self.btnStopburn.setEnabled(var_bool)
@@ -1,367 +1,395
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 PyQt4 import QtGui
12 12 from subprocess import *
13 13 import sys
14 14 import os
15 15 #import subprocess
16 16 import commands
17 17 from functions import functions
18 18 from functions import functions2
19 19
20 20 class MainWindow(QMainWindow, Ui_MainWindow):
21 21 """
22 22 Class documentation goes here.
23 23 """
24 24
25 25 def __init__(self, parent = None):
26 26 QMainWindow.__init__(self, parent)
27 27 self.setupUi(self)
28 28 self.setupUi2()
29 29 #sys.stdout = self #redirige salida estandar
30 30
31 31 def setupUi2(self):
32 32
33 33 functions2.detect_devices(self) #busca los dispositivos de grabacion
34 34
35 self.var_n_discs=0
36 self.var_disc=0
35 self.var_Discs = 0 #Numero de discos del proyecto
36 self.var_Copys = 0 #Numero de copias
37 self.var_disc_n = 0
38 self.var_copy_n = 0
39
37 40 self.var_list=[]
38 41 self.var_sublist=[]
39 self.bool_iso = False
40 self.bool_burn = False
42
43 self.var_devices=[]
44
45 self.var_step = 0
46 self.bool_state_burning = False
47
41 48
42 49 #Revisa si existe el archivo de confirguracion
43 50 if os.path.isfile("parameters.conf"):
44 51 self.txtInfo.append("Archivo de configuracion encontrado")
45 52 functions2.get_parameters_conf(self)
46 self.txtInfo.append("El proyecto creara "+str(self.var_n_discs)+" DVDs")
53 self.txtInfo.append("El proyecto es de "+str(self.var_Discs)+" discos")
47 54 else:
48 55 self.txtInfo.append("Elija los parametros de configuracion")
49 56 functions2.set_parameters_test(self) #Establece ciertos parametros, para pruebas
50 57
51 58 functions2.set_vars(self) #Carga las variables de la clase con los parametros seleccionados
52 59
53 60 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
54 61 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
55 62 functions.load_days(self)
56
63
64 if os.path.isfile("parameters.conf"):
65 functions2.enabled_items1(True, self) #Se bloquean los parametros de configuracion
66
67
57 68 self.var_process = QtCore.QProcess()
58 69 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput)
59 70 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardError()'), self.readError)
60 71 self.connect(self.var_process, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished)
61 72
62 73
63 74 def write(self, txt):
64 75 self.txtInfo.append(str(txt))
65 76
66 77
67 78 #----------------------------------------------------- Funciones del proceso ---------------------------------------------------------------
68 79
69 80 def readOuput(self):
70 81 self.txtSburn.insertPlainText("stdout: " + QtCore.QString(self.var_process.readAllStandardOutput()))
71 82
72 83 def readError(self):
73 84 self.txtSburn.insertPlainText("stderr: " + QtCore.QString(self.var_process.readAllStandardError()))
74 85
75 86 def finished(self):
76 87 self.txtInfo.append("proceso terminado finished() "+QtCore.QString(self.var_process.exitCode()))
77 if self.var_disc <= self.var_n_discs:
88 if self.var_disc_n <= self.var_Discs and self.bool_state_burning:
78 89 self.burning()
79 90
80 91
81 #----------------------------------------------------- Obtencion de las ruta de los datos ---------------------------------------------------------------
92 #----------------------------------------------------- Obtencion de la ruta de los datos ---------------------------------------------------------------
82 93
83 94 @pyqtSignature("")
84 95 def on_btnDpath_clicked(self):
85 96 """
86 97 Permite seleccionar graficamente el direcorio de los datos a grabar
87 98 """
88 self.var_Dpath= QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)
99 self.var_Dpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
89 100 self.txtDpath.setText(self.var_Dpath)
90 101 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
91 102 functions.load_days(self)
92 103
93 104
94 105 @pyqtSignature("")
95 106 def on_txtDpath_editingFinished(self):
96 107 """
97 108 Carga la ruta editada y verifica que sea correcta y carga la lista de dias
98 109 """
99 self.var_Dpath=self.txtDpath.text() #Se carga la variable con la ruta recien editada
110 self.var_Dpath=str(self.txtDpath.text()) #Se carga la variable con la ruta recien editada
100 111 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
101 112 functions.load_days(self)
102 113
103 114
104 115 #----------------------------------------------------- Obtencion de las ruta del proyecto ---------------------------------------------------------------
105 116
106 117 @pyqtSignature("")
107 118 def on_btnRpath_clicked(self):
108 119 """
109 120 Permite seleccionar graficamente el direcorio del proyecto
110 121 """
111 self.var_Rpath = QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly)
122 self.var_Rpath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
112 123 self.txtRpath.setText(self.var_Rpath)
113 124 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
114 125
115 126
116 127 @pyqtSignature("")
117 128 def on_txtRpath_editingFinished(self):
118 129 """
119 130 Valida la ruta del proyecto
120 131 """
121 self.var_Rpath=self.txtRpath.text() #Se carga la variable con la ruta recien editada
132 self.var_Rpath = str(self.txtRpath.text()) #Se carga la variable con la ruta recien editada
122 133 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
123 134
124 135
125 136 #----------------------------------------------------- Tipo de datos ---------------------------------------------------------------
126 137
127 138 @pyqtSignature("int")
128 139 def on_lstDtype_activated(self, index):
129 140 """
130 141 Permite elegir entre los tipos de archivos
131 142 """
132 143 self.txtDtype.setReadOnly(True)
133 144 if index == 0:
134 145 self.var_Dtype ='r'
135 146 elif index == 1:
136 147 self.var_Dtype ='pdata'
137 148 elif index == 2:
138 149 self.var_Dtype ='sswma'
139 150 else :
140 151 self.var_Dtype =''
141 152 self.txtDtype.setReadOnly(False)
142 153
143 154 self.txtDtype.setText(self.var_Dtype)
144 155 functions.load_days(self) #llamada a funcion
145 156
146 157 @pyqtSignature("")
147 158 def on_txtDtype_editingFinished(self):
148 self.var_Dtype=self.txtDtype.text()
159 self.var_Dtype=str(self.txtDtype.text())
149 160 functions.load_days(self) #llamada a funcion
150 161
151 162
152 163 #----------------------------------------------------- Etiqueta ---------------------------------------------------------------
153 164
154 165 @pyqtSignature("")
155 166 def on_txtElabel_editingFinished(self):
156 self.var_Elabel = self.txtElabel.text()
167 self.var_Elabel = str(self.txtElabel.text())
157 168
158 169 #----------------------------------------------------- Numero de copias ---------------------------------------------------------------
159 170 @pyqtSignature("")
160 171 def on_txtCopys_editingFinished(self):
161 172 self.var_Copys = self.txtCopys.value()
162 173
163 174 #----------------------------------------------------- Seleccion del rango de fechas ---------------------------------------------------------------
164 175
165 176 @pyqtSignature("int") #CLOSED
166 177 def on_lstStartDay_activated(self, index):
167 178 """
168 179 Cambia la lista de opciones en lstStopDay
169 180 """
170 181 var_StopDay_index=self.lstStopDay.count() - self.lstStopDay.currentIndex()
171 182 self.lstStopDay.clear()
172 183
173 184 for i in self.var_list[index:]:
174 185 self.lstStopDay.addItem(i)
175 186
176 187 self.lstStopDay.setCurrentIndex(self.lstStopDay.count() - var_StopDay_index)
177 188
178 189 functions.get_sub_list(self)
179 190
180 191
181 192 @pyqtSignature("int") #CLOSED
182 193 def on_lstStopDay_activated(self, index):
183 194 """
184 195 Cambia la lista de opciones en lstStartDay
185 196 """
186 197 var_StartDay_index=self.lstStartDay.currentIndex()
187 198 var_end_index = self.lstStopDay.count() - index
188 199 self.lstStartDay.clear()
189 200
190 201 for i in self.var_list[:len(self.var_list) - var_end_index + 1]:
191 202 self.lstStartDay.addItem(i)
192 203
193 204 self.lstStartDay.setCurrentIndex(var_StartDay_index)
194 205
195 206 functions.get_sub_list(self)
196 207
197 208
198 209 #----------------------------------------------------- Capacidad del dispositivo de grabacion ---------------------------------------------------------------
199 210
200 211 @pyqtSignature("")
201 212 def on_txtDcapacity_editingFinished(self):
202 213 self.var_Dcapacity = self.txtDcapacity.value()
203 214
204 215
205 216 @pyqtSignature("int") #CLOSED
206 217 def on_lstDcapacity_activated(self, index):
207 218 """
208 219 Permite elegir el tamaΓ±o del disco
209 220 """
210 221 if index == 0:
211 222 var_size=25.0
212 223 elif index == 1:
213 224 var_size=8.5
214 225 elif index == 2:
215 226 var_size=4.7
216 227 elif index == 3:
217 228 var_size=0.7
218 229
219 230 if index != 4:
220 231 self.txtDcapacity.setValue(var_size*10**9/1024**2)
221 232 self.txtDcapacity.setReadOnly(True)
222 233 else:
223 234 self.txtDcapacity.setValue(100.0)
224 235 self.txtDcapacity.setReadOnly(False)
225 236
237 self.var_lstDcapacity = self.lstDcapacity.currentIndex()
226 238 self.var_Dcapacity = self.txtDcapacity.value()
227 239
228 240
229 241 #==============================================================================
230 242 # Botones para la generacion de los archivos de configuracion y el proceso de grabacion
231 243 #==============================================================================
232 244
233 245 #----------------------------------------------------- Generacion de la configuracion usando los parametros ---------------------------------------------------------------
234 246
235 247 @pyqtSignature("")
236 248 def on_btnGbkp_clicked(self):
237 249 """
238 250 Generacion de archivos de configuracion usando los parametros
239 251 """
240 252
241 253 if functions.validate_parameters(self) == False:
242 254 return
243 255
244 256 #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente
245 257 list_dirs=['gpath','iso','ppath']
246 258 bool_make_dirs = functions.make_dirs(list_dirs, self)
247 259 if bool_make_dirs == False:
248 260 return
249 261
250 262 var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar
251 self.var_n_discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
263 self.var_Discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
252 264 functions.make_files_print(self) # Se crean los archivos .print
253 265 functions2.make_parameters_conf(self) # se crea el archivo parameters.conf
254 266
255 267 #Se bloquean los parametros de configuracion
256 268 functions2.enabled_items1(True, self)
269
257 270
258 271
259 272 #----------------------------------------------------- Permite reiniciar la configuracion ---------------------------------------------------------------
260 273
261 274 @pyqtSignature("")
262 275 def on_btnRestart_clicked(self):
263 276 """
264 277 Permite que se puedan cambiar los parametros
265 278 """
266 279 functions2.enabled_items1(False, self)
267 280 os.remove("parameters.conf")
268 281
269 282
270 283 #----------------------------------------------------- Iniciar proceso de grabacion ---------------------------------------------------------------
271 284
272 285 @pyqtSignature("")
273 286 def on_btnStartburn_clicked(self):
274 287 """
275 288 Se inicia el proceso de grabacion
276 289 """
277 functions2.enabled_items2(True, self)
278
279 sys.stdout = self
280 # #sys.stderr = self
281 # print "stdout_!!!"
282
283 self.var_devices=[]
284 if self.chkDevA.isChecked():
285 self.var_devices.append(self.txtDeviceA.text())
286 if self.chkDevB.isChecked():
287 self.var_devices.append(self.txtDeviceB.text())
288 if self.chkDevC.isChecked():
289 self.var_devices.append(self.txtDeviceC.text())
290 if self.chkDevD.isChecked():
291 self.var_devices.append(self.txtDeviceD.text())
292
293 if len(self.var_devices) ==0:
290
291 #Verifica que exista algun dispositivo de grabacion seleccionado
292 if not(functions2.selected_devices(self)):
293 self.txtInfo.append("No hay ningun dispositivo de grabacion seleccionado ")
294 294 return
295 295
296 #Lista los dispositivos de grabacion a usar
296 297 for dev in self.var_devices:
297 298 self.txtInfo.append("dispositivo :"+dev)
298 299
299 self.var_disc = 1
300 #Asigna las variables con los valores iniciales
301 self.var_disc_n = 0 # numero de disco actual para grabacion
302 self.var_copy_n = 0
303 self.var_step = 0
304 self.bool_state_burning = True
305
306 functions2.enabled_items2(True, self)
300 307 self.burning()
301 308
302 309 def burning(self):
303 310
304 311 var_Rpath_ppath=self.var_Rpath+"/ppath"
305 312 var_Rpath_iso=self.var_Rpath+"/iso"
306 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc)+".iso"
307
308 if not(self.bool_iso):
309 # self.bool_iso = True
310 self.bool_burn = False
311 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc)+".iso"
312 file_dat=var_Rpath_ppath+"/"+self.var_Elabel+"_"+functions.i2s(self.var_disc)+".dat"
313 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
314
315 #Creacion del archivo.iso para la grabacion
316 if self.var_step == 0:
317 self.var_disc_n += 1 # numero de disco actual para grabacion
318 self.txtInfo.append("Creando el iso del disco numero: "+self.var_disc_n)
319
320 #Si ya se grabaron todos los discos
321 if self.var_disc_n > self.var_Discs:
322 self.bool_state_burning = False
323 self.txtInfo.append("GRABACION TERMINADA")
324 return
325
326 #comando para la creacion del archivo.iso
327 file_dat=var_Rpath_ppath+"/"+self.var_Elabel+"_"+functions.i2s(self.var_disc_n)+".dat"
313 328 var_cmd = 'genisoimage -hide-joliet-trans-tbl -joliet-long -r '
314 329 var_cmd += ' -A '+self.var_Elabel+' -V '+self.var_Elabel
315 330 var_cmd += ' -graft-points -path-list '+ file_dat+' -o '+file_iso
316
317 elif not(self.bool_burn):
318 self.bool_iso = False
319 self.bool_burn = True
320 var_dev_tmp=self.var_devices[ (self.var_disc-1) % len(self.var_devices) ]
331 self.var_step = 1 #Se ira al paso de la grabacion en la siguiente llamada
332
333 #Grabacion de los DVDs
334 elif self.var_step == 1:
335 self.var_copy_n += 1 # numero de copia actual
336 self.txtInfo.append("Grabando la copia numero: "+self.var_copy_n)
337
338 #Si esta es la ultima copia se pasara al siguiente disco en la siguiente llamada a la funcion
339 if self.var_copy_n == self.var_Copys:
340 self.var_step = 0
341
342 var_index = (((self.var_disc_n - 1) * self.var_Discs) + self.var_copy_n) % len(self.var_devices)
343
344 if var_index == 0:
345 self.txtInfo.append("EXPULSANDO BANDEJAS")
346
347 var_dev_tmp=self.var_devices[var_index]
321 348 var_cmd = "wodim -v dev="+var_dev_tmp+" speed=16 "+ file_iso
322 self.var_disc += 1
323
324 # self.var_process.start('ls')
325 # self.txtInfo.append(var_cmd)
326
327 self.txtInfo.append("creando iso")
328 self.var_process.start(var_cmd)
349
350
351 self.var_process.start('ls')
352 self.txtInfo.append(var_cmd)
353
354 # self.txtInfo.append("creando iso")
355 # self.var_process.start(var_cmd)
329 356
330 357
331 358 #----------------------------------------------------- Detener proceso de grabacion ---------------------------------------------------------------
332 359
333 360 @pyqtSignature("")
334 361 def on_btnStopburn_clicked(self):
335 362 """
336 363 Slot documentation goes here.
337 364 """
338 # self.var_process.terminate() #Termina el proceso, si puede
339 self.var_process.kill() #Termina el proceso, si puede
365 self.bool_state_burning = False
366 self.var_process.terminate() #Termina el proceso, si puede
367 # self.var_process.kill() #Mata el proceso, no es la forma adecuada
340 368 functions2.enabled_items2(False, self)
341 369
342 370
343 371 #----------------------------------------------------- Testeo de las unidades de grabacion ---------------------------------------------------------------
344 372
345 373 @pyqtSignature("")
346 374 def on_btnTdevA_clicked(self):
347 375 var_dev = str(self.txtDeviceA.text())
348 376 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
349 377 commands.getstatusoutput(var_cmd)
350 378
351 379 @pyqtSignature("")
352 380 def on_btnTdevB_clicked(self):
353 381 var_dev = str(self.txtDeviceB.text())
354 382 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
355 383 commands.getstatusoutput(var_cmd)
356 384
357 385 @pyqtSignature("")
358 386 def on_btnTdevC_clicked(self):
359 387 var_dev = str(self.txtDeviceC.text())
360 388 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
361 389 commands.getstatusoutput(var_cmd)
362 390
363 391 @pyqtSignature("")
364 392 def on_btnTdevD_clicked(self):
365 393 var_dev = str(self.txtDeviceD.text())
366 394 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
367 395 commands.getstatusoutput(var_cmd)
@@ -1,1019 +1,1019
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>809</width>
10 10 <height>737</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 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="text">
123 123 <string>r</string>
124 124 </property>
125 125 <property name="readOnly">
126 126 <bool>true</bool>
127 127 </property>
128 128 </widget>
129 129 </item>
130 130 <item>
131 131 <widget class="QCheckBox" name="chkMST">
132 132 <property name="text">
133 133 <string>MST-ISR Data</string>
134 134 </property>
135 135 </widget>
136 136 </item>
137 137 </layout>
138 138 </item>
139 139 <item>
140 140 <layout class="QHBoxLayout" name="horizontalLayout_6">
141 141 <item>
142 142 <widget class="QLabel" name="lblElabel">
143 143 <property name="text">
144 144 <string>Exp. Label at device</string>
145 145 </property>
146 146 </widget>
147 147 </item>
148 148 <item>
149 149 <widget class="QLabel" name="lblCopys">
150 150 <property name="text">
151 151 <string>Copys</string>
152 152 </property>
153 153 </widget>
154 154 </item>
155 155 </layout>
156 156 </item>
157 157 <item>
158 158 <layout class="QHBoxLayout" name="horizontalLayout_5">
159 159 <item>
160 160 <widget class="QLineEdit" name="txtElabel"/>
161 161 </item>
162 162 <item>
163 163 <widget class="QSpinBox" name="txtCopys">
164 164 <property name="sizePolicy">
165 165 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
166 166 <horstretch>0</horstretch>
167 167 <verstretch>0</verstretch>
168 168 </sizepolicy>
169 169 </property>
170 170 </widget>
171 171 </item>
172 172 </layout>
173 173 </item>
174 174 <item>
175 175 <layout class="QHBoxLayout" name="horizontalLayout_7">
176 176 <item>
177 177 <widget class="QLabel" name="lblStartDay">
178 178 <property name="text">
179 179 <string>Start Day:</string>
180 180 </property>
181 181 </widget>
182 182 </item>
183 183 <item>
184 184 <widget class="QLabel" name="lblStopDay">
185 185 <property name="text">
186 186 <string>Stop Day:</string>
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_8">
194 194 <item>
195 195 <widget class="QComboBox" name="lstStartDay"/>
196 196 </item>
197 197 <item>
198 198 <widget class="QComboBox" name="lstStopDay"/>
199 199 </item>
200 200 </layout>
201 201 </item>
202 202 </layout>
203 203 </widget>
204 204 <widget class="QWidget" name="tabDconfig">
205 205 <property name="enabled">
206 206 <bool>true</bool>
207 207 </property>
208 208 <property name="sizePolicy">
209 209 <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
210 210 <horstretch>0</horstretch>
211 211 <verstretch>0</verstretch>
212 212 </sizepolicy>
213 213 </property>
214 214 <attribute name="title">
215 215 <string>Device Config.</string>
216 216 </attribute>
217 217 <layout class="QVBoxLayout" name="verticalLayout_3">
218 218 <item>
219 219 <layout class="QGridLayout" name="gridLayout">
220 220 <item row="0" column="0">
221 221 <layout class="QVBoxLayout" name="verticalLayout_15">
222 222 <item>
223 223 <widget class="QCheckBox" name="chkDevA">
224 224 <property name="text">
225 225 <string>Dev A</string>
226 226 </property>
227 227 <property name="checked">
228 228 <bool>true</bool>
229 229 </property>
230 230 </widget>
231 231 </item>
232 232 <item>
233 233 <widget class="QWidget" name="grpDevA" native="true">
234 234 <layout class="QVBoxLayout" name="verticalLayout_11">
235 235 <item>
236 236 <widget class="QLineEdit" name="txtDeviceA"/>
237 237 </item>
238 238 <item>
239 239 <widget class="QLineEdit" name="txtBspeedA">
240 240 <property name="text">
241 241 <string>16</string>
242 242 </property>
243 243 </widget>
244 244 </item>
245 245 <item>
246 246 <widget class="QLineEdit" name="txtBmodeA">
247 247 <property name="text">
248 248 <string>-sao</string>
249 249 </property>
250 250 </widget>
251 251 </item>
252 252 <item>
253 253 <widget class="QPushButton" name="btnTdevA">
254 254 <property name="text">
255 255 <string>Test DevA</string>
256 256 </property>
257 257 </widget>
258 258 </item>
259 259 </layout>
260 260 </widget>
261 261 </item>
262 262 </layout>
263 263 </item>
264 264 <item row="0" column="1">
265 265 <layout class="QVBoxLayout" name="verticalLayout_16">
266 266 <item>
267 267 <widget class="QCheckBox" name="chkDevB">
268 268 <property name="text">
269 269 <string>Dev B</string>
270 270 </property>
271 271 <property name="checked">
272 272 <bool>true</bool>
273 273 </property>
274 274 </widget>
275 275 </item>
276 276 <item>
277 277 <widget class="QWidget" name="grpDevB" native="true">
278 278 <layout class="QVBoxLayout" name="verticalLayout_12">
279 279 <item>
280 280 <widget class="QLineEdit" name="txtDeviceB"/>
281 281 </item>
282 282 <item>
283 283 <widget class="QLineEdit" name="txtBspeedB">
284 284 <property name="text">
285 285 <string>16</string>
286 286 </property>
287 287 </widget>
288 288 </item>
289 289 <item>
290 290 <widget class="QLineEdit" name="txtBmodeB">
291 291 <property name="text">
292 292 <string>-sao</string>
293 293 </property>
294 294 </widget>
295 295 </item>
296 296 <item>
297 297 <widget class="QPushButton" name="btnTdevB">
298 298 <property name="text">
299 299 <string>Test DevB</string>
300 300 </property>
301 301 </widget>
302 302 </item>
303 303 </layout>
304 304 </widget>
305 305 </item>
306 306 </layout>
307 307 </item>
308 308 <item row="0" column="2">
309 309 <layout class="QVBoxLayout" name="verticalLayout_17">
310 310 <item>
311 311 <widget class="QCheckBox" name="chkDevC">
312 312 <property name="text">
313 313 <string>Dev C</string>
314 314 </property>
315 315 <property name="checked">
316 316 <bool>true</bool>
317 317 </property>
318 318 </widget>
319 319 </item>
320 320 <item>
321 321 <widget class="QWidget" name="grpDevC" native="true">
322 322 <layout class="QVBoxLayout" name="verticalLayout_13">
323 323 <item>
324 324 <widget class="QLineEdit" name="txtDeviceC"/>
325 325 </item>
326 326 <item>
327 327 <widget class="QLineEdit" name="txtBspeedC">
328 328 <property name="text">
329 329 <string>16</string>
330 330 </property>
331 331 </widget>
332 332 </item>
333 333 <item>
334 334 <widget class="QLineEdit" name="txtBmodeC">
335 335 <property name="text">
336 336 <string>-sao</string>
337 337 </property>
338 338 </widget>
339 339 </item>
340 340 <item>
341 341 <widget class="QPushButton" name="btnTdevC">
342 342 <property name="text">
343 343 <string>Test DevC</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 row="0" column="3">
353 353 <layout class="QVBoxLayout" name="verticalLayout_18">
354 354 <item>
355 355 <widget class="QCheckBox" name="chkDevD">
356 356 <property name="text">
357 357 <string>Dev D</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="grpDevD" native="true">
366 366 <layout class="QVBoxLayout" name="verticalLayout_14">
367 367 <item>
368 368 <widget class="QLineEdit" name="txtDeviceD"/>
369 369 </item>
370 370 <item>
371 371 <widget class="QLineEdit" name="txtBspeedD">
372 372 <property name="text">
373 373 <string>16</string>
374 374 </property>
375 375 </widget>
376 376 </item>
377 377 <item>
378 378 <widget class="QLineEdit" name="txtBmodeD">
379 379 <property name="text">
380 380 <string>-sao</string>
381 381 </property>
382 382 </widget>
383 383 </item>
384 384 <item>
385 385 <widget class="QPushButton" name="btnTdevD">
386 386 <property name="text">
387 387 <string>Test DevD</string>
388 388 </property>
389 389 </widget>
390 390 </item>
391 391 </layout>
392 392 </widget>
393 393 </item>
394 394 </layout>
395 395 </item>
396 396 <item row="0" column="4">
397 397 <layout class="QVBoxLayout" name="verticalLayout_19">
398 398 <item>
399 399 <widget class="QLabel" name="label_2">
400 400 <property name="text">
401 401 <string/>
402 402 </property>
403 403 </widget>
404 404 </item>
405 405 <item>
406 406 <widget class="QLabel" name="lblDevice">
407 407 <property name="text">
408 408 <string>Device</string>
409 409 </property>
410 410 </widget>
411 411 </item>
412 412 <item>
413 413 <widget class="QLabel" name="lblBspeed">
414 414 <property name="text">
415 415 <string>Burn Speed</string>
416 416 </property>
417 417 </widget>
418 418 </item>
419 419 <item>
420 420 <widget class="QLabel" name="lblBmode">
421 421 <property name="text">
422 422 <string>Burn Mode</string>
423 423 </property>
424 424 </widget>
425 425 </item>
426 426 <item>
427 427 <widget class="QLabel" name="label">
428 428 <property name="text">
429 429 <string/>
430 430 </property>
431 431 </widget>
432 432 </item>
433 433 </layout>
434 434 </item>
435 435 </layout>
436 436 </item>
437 437 <item>
438 438 <layout class="QHBoxLayout" name="horizontalLayout_9">
439 439 <property name="sizeConstraint">
440 440 <enum>QLayout::SetFixedSize</enum>
441 441 </property>
442 442 <item>
443 443 <widget class="QLabel" name="lblBprocess">
444 444 <property name="sizePolicy">
445 445 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
446 446 <horstretch>0</horstretch>
447 447 <verstretch>0</verstretch>
448 448 </sizepolicy>
449 449 </property>
450 450 <property name="text">
451 451 <string>Burning process</string>
452 452 </property>
453 453 </widget>
454 454 </item>
455 455 <item>
456 456 <widget class="QCheckBox" name="chkSimultaneously">
457 457 <property name="sizePolicy">
458 458 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
459 459 <horstretch>0</horstretch>
460 460 <verstretch>0</verstretch>
461 461 </sizepolicy>
462 462 </property>
463 463 <property name="text">
464 464 <string>Simultaneously</string>
465 465 </property>
466 466 </widget>
467 467 </item>
468 468 <item>
469 469 <widget class="QCheckBox" name="chkSequentially">
470 470 <property name="sizePolicy">
471 471 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
472 472 <horstretch>0</horstretch>
473 473 <verstretch>0</verstretch>
474 474 </sizepolicy>
475 475 </property>
476 476 <property name="text">
477 477 <string>Sequentially</string>
478 478 </property>
479 479 <property name="checked">
480 480 <bool>true</bool>
481 481 </property>
482 482 </widget>
483 483 </item>
484 484 </layout>
485 485 </item>
486 486 <item>
487 487 <layout class="QHBoxLayout" name="horizontalLayout_11">
488 488 <property name="spacing">
489 489 <number>6</number>
490 490 </property>
491 491 <property name="sizeConstraint">
492 492 <enum>QLayout::SetDefaultConstraint</enum>
493 493 </property>
494 494 <item>
495 495 <widget class="QLabel" name="lblDcapacity">
496 496 <property name="sizePolicy">
497 497 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
498 498 <horstretch>0</horstretch>
499 499 <verstretch>0</verstretch>
500 500 </sizepolicy>
501 501 </property>
502 502 <property name="text">
503 503 <string>Device Capacity (MB)</string>
504 504 </property>
505 505 </widget>
506 506 </item>
507 507 <item>
508 508 <widget class="QCheckBox" name="chkSalert">
509 509 <property name="sizePolicy">
510 510 <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
511 511 <horstretch>0</horstretch>
512 512 <verstretch>0</verstretch>
513 513 </sizepolicy>
514 514 </property>
515 515 <property name="text">
516 516 <string>Sound Alert</string>
517 517 </property>
518 518 </widget>
519 519 </item>
520 520 </layout>
521 521 </item>
522 522 <item>
523 523 <layout class="QHBoxLayout" name="horizontalLayout_10">
524 524 <property name="sizeConstraint">
525 525 <enum>QLayout::SetFixedSize</enum>
526 526 </property>
527 527 <item>
528 528 <widget class="QComboBox" name="lstDcapacity">
529 529 <property name="currentIndex">
530 530 <number>2</number>
531 531 </property>
532 532 <item>
533 533 <property name="text">
534 534 <string>BluRay [25.0 GB]</string>
535 535 </property>
536 536 </item>
537 537 <item>
538 538 <property name="text">
539 539 <string>DVD2 [8.5 GB]</string>
540 540 </property>
541 541 </item>
542 542 <item>
543 543 <property name="text">
544 544 <string>DVD1 [4.7 GB]</string>
545 545 </property>
546 546 </item>
547 547 <item>
548 548 <property name="text">
549 549 <string>CD [0.7 GB]</string>
550 550 </property>
551 551 </item>
552 552 <item>
553 553 <property name="text">
554 554 <string>Other [? GB]</string>
555 555 </property>
556 556 </item>
557 557 </widget>
558 558 </item>
559 559 <item>
560 560 <widget class="QDoubleSpinBox" name="txtDcapacity">
561 561 <property name="sizePolicy">
562 562 <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
563 563 <horstretch>0</horstretch>
564 564 <verstretch>0</verstretch>
565 565 </sizepolicy>
566 566 </property>
567 567 <property name="readOnly">
568 568 <bool>true</bool>
569 569 </property>
570 570 <property name="minimum">
571 571 <double>100.000000000000000</double>
572 572 </property>
573 573 <property name="maximum">
574 574 <double>99999.990000000005239</double>
575 575 </property>
576 576 <property name="value">
577 577 <double>4482.270000000000437</double>
578 578 </property>
579 579 </widget>
580 580 </item>
581 581 <item>
582 582 <widget class="QCheckBox" name="chkPSgraphic">
583 583 <property name="text">
584 584 <string>PS Graphic</string>
585 585 </property>
586 586 </widget>
587 587 </item>
588 588 <item>
589 589 <widget class="QLineEdit" name="lineEdit_17"/>
590 590 </item>
591 591 </layout>
592 592 </item>
593 593 </layout>
594 594 </widget>
595 595 <widget class="QWidget" name="tabSburn">
596 596 <attribute name="title">
597 597 <string>Status Burn</string>
598 598 </attribute>
599 599 <layout class="QVBoxLayout" name="verticalLayout_4">
600 600 <item>
601 601 <widget class="QWidget" name="widget_2" native="true">
602 602 <property name="sizePolicy">
603 603 <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
604 604 <horstretch>0</horstretch>
605 605 <verstretch>0</verstretch>
606 606 </sizepolicy>
607 607 </property>
608 608 <property name="maximumSize">
609 609 <size>
610 610 <width>500</width>
611 611 <height>16777215</height>
612 612 </size>
613 613 </property>
614 614 <layout class="QGridLayout" name="gridLayout_2">
615 615 <item row="3" column="2">
616 616 <widget class="QLineEdit" name="txtSTATUSb">
617 617 <property name="readOnly">
618 618 <bool>true</bool>
619 619 </property>
620 620 </widget>
621 621 </item>
622 622 <item row="5" column="1">
623 623 <widget class="QLineEdit" name="txtINFOa">
624 624 <property name="readOnly">
625 625 <bool>true</bool>
626 626 </property>
627 627 </widget>
628 628 </item>
629 629 <item row="3" column="1">
630 630 <widget class="QLineEdit" name="txtSTATUSa">
631 631 <property name="readOnly">
632 632 <bool>true</bool>
633 633 </property>
634 634 </widget>
635 635 </item>
636 636 <item row="5" column="2">
637 637 <widget class="QLineEdit" name="txtINFOb">
638 638 <property name="readOnly">
639 639 <bool>true</bool>
640 640 </property>
641 641 </widget>
642 642 </item>
643 643 <item row="3" column="3">
644 644 <widget class="QLineEdit" name="txtSTATUSc">
645 645 <property name="readOnly">
646 646 <bool>true</bool>
647 647 </property>
648 648 </widget>
649 649 </item>
650 650 <item row="3" column="4">
651 651 <widget class="QLineEdit" name="txtSTATUSd">
652 652 <property name="readOnly">
653 653 <bool>true</bool>
654 654 </property>
655 655 </widget>
656 656 </item>
657 657 <item row="5" column="4">
658 658 <widget class="QLineEdit" name="txtINFOd">
659 659 <property name="readOnly">
660 660 <bool>true</bool>
661 661 </property>
662 662 </widget>
663 663 </item>
664 664 <item row="6" column="1">
665 665 <widget class="QLineEdit" name="txtSETa">
666 666 <property name="readOnly">
667 667 <bool>true</bool>
668 668 </property>
669 669 </widget>
670 670 </item>
671 671 <item row="6" column="2">
672 672 <widget class="QLineEdit" name="txtSETb">
673 673 <property name="readOnly">
674 674 <bool>true</bool>
675 675 </property>
676 676 </widget>
677 677 </item>
678 678 <item row="6" column="3">
679 679 <widget class="QLineEdit" name="txtSETc">
680 680 <property name="readOnly">
681 681 <bool>true</bool>
682 682 </property>
683 683 </widget>
684 684 </item>
685 685 <item row="6" column="4">
686 686 <widget class="QLineEdit" name="txtSETd">
687 687 <property name="readOnly">
688 688 <bool>true</bool>
689 689 </property>
690 690 </widget>
691 691 </item>
692 692 <item row="3" column="0">
693 693 <widget class="QLabel" name="lblSTATUS">
694 694 <property name="text">
695 695 <string>STATUS</string>
696 696 </property>
697 697 </widget>
698 698 </item>
699 699 <item row="5" column="0">
700 700 <widget class="QLabel" name="lblINFO">
701 701 <property name="text">
702 702 <string>INFO</string>
703 703 </property>
704 704 </widget>
705 705 </item>
706 706 <item row="6" column="0">
707 707 <widget class="QLabel" name="lblSET">
708 708 <property name="text">
709 709 <string>SET</string>
710 710 </property>
711 711 </widget>
712 712 </item>
713 713 <item row="0" column="1">
714 714 <widget class="QLabel" name="lblDevA">
715 715 <property name="text">
716 716 <string>DEV A</string>
717 717 </property>
718 718 <property name="alignment">
719 719 <set>Qt::AlignCenter</set>
720 720 </property>
721 721 </widget>
722 722 </item>
723 723 <item row="0" column="2">
724 724 <widget class="QLabel" name="lblDevB">
725 725 <property name="text">
726 726 <string>DEV B</string>
727 727 </property>
728 728 <property name="alignment">
729 729 <set>Qt::AlignCenter</set>
730 730 </property>
731 731 </widget>
732 732 </item>
733 733 <item row="0" column="3">
734 734 <widget class="QLabel" name="lblDevC">
735 735 <property name="text">
736 736 <string>DEV C</string>
737 737 </property>
738 738 <property name="alignment">
739 739 <set>Qt::AlignCenter</set>
740 740 </property>
741 741 </widget>
742 742 </item>
743 743 <item row="0" column="4">
744 744 <widget class="QLabel" name="lblDevD">
745 745 <property name="text">
746 746 <string>DEV D</string>
747 747 </property>
748 748 <property name="alignment">
749 749 <set>Qt::AlignCenter</set>
750 750 </property>
751 751 </widget>
752 752 </item>
753 753 <item row="5" column="3">
754 754 <widget class="QLineEdit" name="txtINFOc">
755 755 <property name="readOnly">
756 756 <bool>true</bool>
757 757 </property>
758 758 </widget>
759 759 </item>
760 760 </layout>
761 761 </widget>
762 762 </item>
763 763 <item>
764 764 <widget class="QTextEdit" name="txtSburn">
765 765 <property name="readOnly">
766 766 <bool>true</bool>
767 767 </property>
768 768 </widget>
769 769 </item>
770 770 </layout>
771 771 </widget>
772 772 </widget>
773 773 </item>
774 774 <item>
775 775 <widget class="QTextEdit" name="txtInfo">
776 776 <property name="readOnly">
777 777 <bool>true</bool>
778 778 </property>
779 779 </widget>
780 780 </item>
781 781 <item>
782 782 <layout class="QHBoxLayout" name="horizontalLayout_2">
783 783 <property name="sizeConstraint">
784 784 <enum>QLayout::SetDefaultConstraint</enum>
785 785 </property>
786 786 <item>
787 787 <widget class="QPushButton" name="btnGbkp">
788 788 <property name="enabled">
789 789 <bool>false</bool>
790 790 </property>
791 791 <property name="text">
792 792 <string>Generate Bkp</string>
793 793 </property>
794 794 </widget>
795 795 </item>
796 796 <item>
797 797 <widget class="QPushButton" name="btnRestart">
798 798 <property name="enabled">
799 799 <bool>false</bool>
800 800 </property>
801 801 <property name="text">
802 802 <string>Restart</string>
803 803 </property>
804 804 </widget>
805 805 </item>
806 806 <item>
807 807 <widget class="QPushButton" name="btnStartburn">
808 808 <property name="enabled">
809 809 <bool>false</bool>
810 810 </property>
811 811 <property name="text">
812 812 <string>Start Burn</string>
813 813 </property>
814 814 </widget>
815 815 </item>
816 816 <item>
817 817 <widget class="QPushButton" name="btnStopburn">
818 818 <property name="enabled">
819 819 <bool>false</bool>
820 820 </property>
821 821 <property name="text">
822 822 <string>Stop Burn</string>
823 823 </property>
824 824 </widget>
825 825 </item>
826 826 </layout>
827 827 </item>
828 828 </layout>
829 829 </widget>
830 830 <widget class="QMenuBar" name="menubar">
831 831 <property name="geometry">
832 832 <rect>
833 833 <x>0</x>
834 834 <y>0</y>
835 835 <width>809</width>
836 <height>25</height>
836 <height>21</height>
837 837 </rect>
838 838 </property>
839 839 <widget class="QMenu" name="menuFile">
840 840 <property name="title">
841 841 <string>File</string>
842 842 </property>
843 843 <addaction name="actionSave_Config"/>
844 844 <addaction name="actionQuit"/>
845 845 </widget>
846 846 <widget class="QMenu" name="menuParameters">
847 847 <property name="title">
848 848 <string>Parameters</string>
849 849 </property>
850 850 <addaction name="actionChange_Parameters"/>
851 851 </widget>
852 852 <widget class="QMenu" name="menuHelp">
853 853 <property name="title">
854 854 <string>Help</string>
855 855 </property>
856 856 <addaction name="actionAbout"/>
857 857 </widget>
858 858 <addaction name="menuFile"/>
859 859 <addaction name="menuParameters"/>
860 860 <addaction name="menuHelp"/>
861 861 </widget>
862 862 <widget class="QStatusBar" name="statusbar"/>
863 863 <action name="actionChange_Parameters">
864 864 <property name="text">
865 865 <string>Change Parameters</string>
866 866 </property>
867 867 </action>
868 868 <action name="actionSave_Config">
869 869 <property name="text">
870 870 <string>Save Config</string>
871 871 </property>
872 872 </action>
873 873 <action name="actionQuit">
874 874 <property name="text">
875 875 <string>Quit</string>
876 876 </property>
877 877 </action>
878 878 <action name="actionAbout">
879 879 <property name="text">
880 880 <string>About</string>
881 881 </property>
882 882 </action>
883 883 </widget>
884 884 <tabstops>
885 885 <tabstop>txtDpath</tabstop>
886 886 <tabstop>btnDpath</tabstop>
887 887 <tabstop>txtRpath</tabstop>
888 888 <tabstop>btnRpath</tabstop>
889 889 <tabstop>lstDtype</tabstop>
890 890 <tabstop>txtDtype</tabstop>
891 891 <tabstop>chkMST</tabstop>
892 892 <tabstop>txtElabel</tabstop>
893 893 <tabstop>lstStartDay</tabstop>
894 894 <tabstop>lstStopDay</tabstop>
895 895 <tabstop>chkSimultaneously</tabstop>
896 896 <tabstop>chkSequentially</tabstop>
897 897 <tabstop>chkSalert</tabstop>
898 898 <tabstop>lstDcapacity</tabstop>
899 899 <tabstop>chkPSgraphic</tabstop>
900 900 <tabstop>lineEdit_17</tabstop>
901 901 <tabstop>txtSTATUSa</tabstop>
902 902 <tabstop>txtSTATUSb</tabstop>
903 903 <tabstop>txtSTATUSc</tabstop>
904 904 <tabstop>txtSTATUSd</tabstop>
905 905 <tabstop>txtINFOa</tabstop>
906 906 <tabstop>txtINFOb</tabstop>
907 907 <tabstop>txtINFOc</tabstop>
908 908 <tabstop>txtINFOd</tabstop>
909 909 <tabstop>txtSETa</tabstop>
910 910 <tabstop>txtSETb</tabstop>
911 911 <tabstop>txtSETc</tabstop>
912 912 <tabstop>txtSETd</tabstop>
913 913 <tabstop>tabWidget</tabstop>
914 914 <tabstop>txtSburn</tabstop>
915 915 <tabstop>btnGbkp</tabstop>
916 916 <tabstop>btnRestart</tabstop>
917 917 <tabstop>btnStartburn</tabstop>
918 918 <tabstop>btnStopburn</tabstop>
919 919 </tabstops>
920 920 <resources/>
921 921 <connections>
922 922 <connection>
923 923 <sender>chkSequentially</sender>
924 924 <signal>clicked()</signal>
925 925 <receiver>chkSimultaneously</receiver>
926 926 <slot>toggle()</slot>
927 927 <hints>
928 928 <hint type="sourcelabel">
929 929 <x>635</x>
930 930 <y>276</y>
931 931 </hint>
932 932 <hint type="destinationlabel">
933 933 <x>350</x>
934 934 <y>269</y>
935 935 </hint>
936 936 </hints>
937 937 </connection>
938 938 <connection>
939 939 <sender>chkSimultaneously</sender>
940 940 <signal>clicked()</signal>
941 941 <receiver>chkSequentially</receiver>
942 942 <slot>toggle()</slot>
943 943 <hints>
944 944 <hint type="sourcelabel">
945 945 <x>433</x>
946 946 <y>276</y>
947 947 </hint>
948 948 <hint type="destinationlabel">
949 949 <x>635</x>
950 950 <y>276</y>
951 951 </hint>
952 952 </hints>
953 953 </connection>
954 954 <connection>
955 955 <sender>chkDevA</sender>
956 956 <signal>toggled(bool)</signal>
957 957 <receiver>grpDevA</receiver>
958 958 <slot>setEnabled(bool)</slot>
959 959 <hints>
960 960 <hint type="sourcelabel">
961 961 <x>95</x>
962 962 <y>86</y>
963 963 </hint>
964 964 <hint type="destinationlabel">
965 965 <x>95</x>
966 966 <y>167</y>
967 967 </hint>
968 968 </hints>
969 969 </connection>
970 970 <connection>
971 971 <sender>chkDevB</sender>
972 972 <signal>toggled(bool)</signal>
973 973 <receiver>grpDevB</receiver>
974 974 <slot>setEnabled(bool)</slot>
975 975 <hints>
976 976 <hint type="sourcelabel">
977 977 <x>251</x>
978 978 <y>86</y>
979 979 </hint>
980 980 <hint type="destinationlabel">
981 981 <x>251</x>
982 982 <y>167</y>
983 983 </hint>
984 984 </hints>
985 985 </connection>
986 986 <connection>
987 987 <sender>chkDevC</sender>
988 988 <signal>toggled(bool)</signal>
989 989 <receiver>grpDevC</receiver>
990 990 <slot>setEnabled(bool)</slot>
991 991 <hints>
992 992 <hint type="sourcelabel">
993 993 <x>407</x>
994 994 <y>86</y>
995 995 </hint>
996 996 <hint type="destinationlabel">
997 997 <x>407</x>
998 998 <y>167</y>
999 999 </hint>
1000 1000 </hints>
1001 1001 </connection>
1002 1002 <connection>
1003 1003 <sender>chkDevD</sender>
1004 1004 <signal>toggled(bool)</signal>
1005 1005 <receiver>grpDevD</receiver>
1006 1006 <slot>setEnabled(bool)</slot>
1007 1007 <hints>
1008 1008 <hint type="sourcelabel">
1009 1009 <x>563</x>
1010 1010 <y>86</y>
1011 1011 </hint>
1012 1012 <hint type="destinationlabel">
1013 1013 <x>563</x>
1014 1014 <y>167</y>
1015 1015 </hint>
1016 1016 </hints>
1017 1017 </connection>
1018 1018 </connections>
1019 1019 </ui>
@@ -1,603 +1,603
1 1 # -*- coding: utf-8 -*-
2 2
3 3 # Form implementation generated from reading ui file '/home/ricardoar/JRO_SVN/eric4/jro_backup_manager/ui/MainWindow.ui'
4 4 #
5 # Created: Tue May 18 17:48:10 2010
6 # by: PyQt4 UI code generator 4.7.3
5 # Created: Tue May 18 22:39:04 2010
6 # by: PyQt4 UI code generator 4.7.2
7 7 #
8 8 # WARNING! All changes made in this file will be lost!
9 9
10 10 from PyQt4 import QtCore, QtGui
11 11
12 12 class Ui_MainWindow(object):
13 13 def setupUi(self, MainWindow):
14 14 MainWindow.setObjectName("MainWindow")
15 15 MainWindow.resize(809, 737)
16 16 self.centralwidget = QtGui.QWidget(MainWindow)
17 17 self.centralwidget.setObjectName("centralwidget")
18 18 self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget)
19 19 self.verticalLayout.setObjectName("verticalLayout")
20 20 self.tabWidget = QtGui.QTabWidget(self.centralwidget)
21 21 self.tabWidget.setEnabled(True)
22 22 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
23 23 sizePolicy.setHorizontalStretch(0)
24 24 sizePolicy.setVerticalStretch(0)
25 25 sizePolicy.setHeightForWidth(self.tabWidget.sizePolicy().hasHeightForWidth())
26 26 self.tabWidget.setSizePolicy(sizePolicy)
27 27 self.tabWidget.setObjectName("tabWidget")
28 28 self.tabParameters = QtGui.QWidget()
29 29 self.tabParameters.setEnabled(True)
30 30 self.tabParameters.setObjectName("tabParameters")
31 31 self.verticalLayout_2 = QtGui.QVBoxLayout(self.tabParameters)
32 32 self.verticalLayout_2.setObjectName("verticalLayout_2")
33 33 self.horizontalLayout = QtGui.QHBoxLayout()
34 34 self.horizontalLayout.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
35 35 self.horizontalLayout.setObjectName("horizontalLayout")
36 36 self.txtDpath = QtGui.QLineEdit(self.tabParameters)
37 37 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Fixed)
38 38 sizePolicy.setHorizontalStretch(0)
39 39 sizePolicy.setVerticalStretch(0)
40 40 sizePolicy.setHeightForWidth(self.txtDpath.sizePolicy().hasHeightForWidth())
41 41 self.txtDpath.setSizePolicy(sizePolicy)
42 42 self.txtDpath.setObjectName("txtDpath")
43 43 self.horizontalLayout.addWidget(self.txtDpath)
44 44 self.btnDpath = QtGui.QPushButton(self.tabParameters)
45 45 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
46 46 sizePolicy.setHorizontalStretch(0)
47 47 sizePolicy.setVerticalStretch(0)
48 48 sizePolicy.setHeightForWidth(self.btnDpath.sizePolicy().hasHeightForWidth())
49 49 self.btnDpath.setSizePolicy(sizePolicy)
50 50 self.btnDpath.setCheckable(False)
51 51 self.btnDpath.setObjectName("btnDpath")
52 52 self.horizontalLayout.addWidget(self.btnDpath)
53 53 self.verticalLayout_2.addLayout(self.horizontalLayout)
54 54 self.horizontalLayout_3 = QtGui.QHBoxLayout()
55 55 self.horizontalLayout_3.setObjectName("horizontalLayout_3")
56 56 self.txtRpath = QtGui.QLineEdit(self.tabParameters)
57 57 self.txtRpath.setObjectName("txtRpath")
58 58 self.horizontalLayout_3.addWidget(self.txtRpath)
59 59 self.btnRpath = QtGui.QPushButton(self.tabParameters)
60 60 self.btnRpath.setObjectName("btnRpath")
61 61 self.horizontalLayout_3.addWidget(self.btnRpath)
62 62 self.verticalLayout_2.addLayout(self.horizontalLayout_3)
63 63 self.lblDtype = QtGui.QLabel(self.tabParameters)
64 64 self.lblDtype.setObjectName("lblDtype")
65 65 self.verticalLayout_2.addWidget(self.lblDtype)
66 66 self.horizontalLayout_4 = QtGui.QHBoxLayout()
67 67 self.horizontalLayout_4.setObjectName("horizontalLayout_4")
68 68 self.lstDtype = QtGui.QComboBox(self.tabParameters)
69 69 self.lstDtype.setObjectName("lstDtype")
70 70 self.lstDtype.addItem("")
71 71 self.lstDtype.addItem("")
72 72 self.lstDtype.addItem("")
73 73 self.lstDtype.addItem("")
74 74 self.horizontalLayout_4.addWidget(self.lstDtype)
75 75 self.txtDtype = QtGui.QLineEdit(self.tabParameters)
76 76 self.txtDtype.setReadOnly(True)
77 77 self.txtDtype.setObjectName("txtDtype")
78 78 self.horizontalLayout_4.addWidget(self.txtDtype)
79 79 self.chkMST = QtGui.QCheckBox(self.tabParameters)
80 80 self.chkMST.setObjectName("chkMST")
81 81 self.horizontalLayout_4.addWidget(self.chkMST)
82 82 self.verticalLayout_2.addLayout(self.horizontalLayout_4)
83 83 self.horizontalLayout_6 = QtGui.QHBoxLayout()
84 84 self.horizontalLayout_6.setObjectName("horizontalLayout_6")
85 85 self.lblElabel = QtGui.QLabel(self.tabParameters)
86 86 self.lblElabel.setObjectName("lblElabel")
87 87 self.horizontalLayout_6.addWidget(self.lblElabel)
88 88 self.lblCopys = QtGui.QLabel(self.tabParameters)
89 89 self.lblCopys.setObjectName("lblCopys")
90 90 self.horizontalLayout_6.addWidget(self.lblCopys)
91 91 self.verticalLayout_2.addLayout(self.horizontalLayout_6)
92 92 self.horizontalLayout_5 = QtGui.QHBoxLayout()
93 93 self.horizontalLayout_5.setObjectName("horizontalLayout_5")
94 94 self.txtElabel = QtGui.QLineEdit(self.tabParameters)
95 95 self.txtElabel.setObjectName("txtElabel")
96 96 self.horizontalLayout_5.addWidget(self.txtElabel)
97 97 self.txtCopys = QtGui.QSpinBox(self.tabParameters)
98 98 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
99 99 sizePolicy.setHorizontalStretch(0)
100 100 sizePolicy.setVerticalStretch(0)
101 101 sizePolicy.setHeightForWidth(self.txtCopys.sizePolicy().hasHeightForWidth())
102 102 self.txtCopys.setSizePolicy(sizePolicy)
103 103 self.txtCopys.setObjectName("txtCopys")
104 104 self.horizontalLayout_5.addWidget(self.txtCopys)
105 105 self.verticalLayout_2.addLayout(self.horizontalLayout_5)
106 106 self.horizontalLayout_7 = QtGui.QHBoxLayout()
107 107 self.horizontalLayout_7.setObjectName("horizontalLayout_7")
108 108 self.lblStartDay = QtGui.QLabel(self.tabParameters)
109 109 self.lblStartDay.setObjectName("lblStartDay")
110 110 self.horizontalLayout_7.addWidget(self.lblStartDay)
111 111 self.lblStopDay = QtGui.QLabel(self.tabParameters)
112 112 self.lblStopDay.setObjectName("lblStopDay")
113 113 self.horizontalLayout_7.addWidget(self.lblStopDay)
114 114 self.verticalLayout_2.addLayout(self.horizontalLayout_7)
115 115 self.horizontalLayout_8 = QtGui.QHBoxLayout()
116 116 self.horizontalLayout_8.setObjectName("horizontalLayout_8")
117 117 self.lstStartDay = QtGui.QComboBox(self.tabParameters)
118 118 self.lstStartDay.setObjectName("lstStartDay")
119 119 self.horizontalLayout_8.addWidget(self.lstStartDay)
120 120 self.lstStopDay = QtGui.QComboBox(self.tabParameters)
121 121 self.lstStopDay.setObjectName("lstStopDay")
122 122 self.horizontalLayout_8.addWidget(self.lstStopDay)
123 123 self.verticalLayout_2.addLayout(self.horizontalLayout_8)
124 124 self.tabWidget.addTab(self.tabParameters, "")
125 125 self.tabDconfig = QtGui.QWidget()
126 126 self.tabDconfig.setEnabled(True)
127 127 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
128 128 sizePolicy.setHorizontalStretch(0)
129 129 sizePolicy.setVerticalStretch(0)
130 130 sizePolicy.setHeightForWidth(self.tabDconfig.sizePolicy().hasHeightForWidth())
131 131 self.tabDconfig.setSizePolicy(sizePolicy)
132 132 self.tabDconfig.setObjectName("tabDconfig")
133 133 self.verticalLayout_3 = QtGui.QVBoxLayout(self.tabDconfig)
134 134 self.verticalLayout_3.setObjectName("verticalLayout_3")
135 135 self.gridLayout = QtGui.QGridLayout()
136 136 self.gridLayout.setObjectName("gridLayout")
137 137 self.verticalLayout_15 = QtGui.QVBoxLayout()
138 138 self.verticalLayout_15.setObjectName("verticalLayout_15")
139 139 self.chkDevA = QtGui.QCheckBox(self.tabDconfig)
140 140 self.chkDevA.setChecked(True)
141 141 self.chkDevA.setObjectName("chkDevA")
142 142 self.verticalLayout_15.addWidget(self.chkDevA)
143 143 self.grpDevA = QtGui.QWidget(self.tabDconfig)
144 144 self.grpDevA.setObjectName("grpDevA")
145 145 self.verticalLayout_11 = QtGui.QVBoxLayout(self.grpDevA)
146 146 self.verticalLayout_11.setObjectName("verticalLayout_11")
147 147 self.txtDeviceA = QtGui.QLineEdit(self.grpDevA)
148 148 self.txtDeviceA.setObjectName("txtDeviceA")
149 149 self.verticalLayout_11.addWidget(self.txtDeviceA)
150 150 self.txtBspeedA = QtGui.QLineEdit(self.grpDevA)
151 151 self.txtBspeedA.setObjectName("txtBspeedA")
152 152 self.verticalLayout_11.addWidget(self.txtBspeedA)
153 153 self.txtBmodeA = QtGui.QLineEdit(self.grpDevA)
154 154 self.txtBmodeA.setObjectName("txtBmodeA")
155 155 self.verticalLayout_11.addWidget(self.txtBmodeA)
156 156 self.btnTdevA = QtGui.QPushButton(self.grpDevA)
157 157 self.btnTdevA.setObjectName("btnTdevA")
158 158 self.verticalLayout_11.addWidget(self.btnTdevA)
159 159 self.verticalLayout_15.addWidget(self.grpDevA)
160 160 self.gridLayout.addLayout(self.verticalLayout_15, 0, 0, 1, 1)
161 161 self.verticalLayout_16 = QtGui.QVBoxLayout()
162 162 self.verticalLayout_16.setObjectName("verticalLayout_16")
163 163 self.chkDevB = QtGui.QCheckBox(self.tabDconfig)
164 164 self.chkDevB.setChecked(True)
165 165 self.chkDevB.setObjectName("chkDevB")
166 166 self.verticalLayout_16.addWidget(self.chkDevB)
167 167 self.grpDevB = QtGui.QWidget(self.tabDconfig)
168 168 self.grpDevB.setObjectName("grpDevB")
169 169 self.verticalLayout_12 = QtGui.QVBoxLayout(self.grpDevB)
170 170 self.verticalLayout_12.setObjectName("verticalLayout_12")
171 171 self.txtDeviceB = QtGui.QLineEdit(self.grpDevB)
172 172 self.txtDeviceB.setObjectName("txtDeviceB")
173 173 self.verticalLayout_12.addWidget(self.txtDeviceB)
174 174 self.txtBspeedB = QtGui.QLineEdit(self.grpDevB)
175 175 self.txtBspeedB.setObjectName("txtBspeedB")
176 176 self.verticalLayout_12.addWidget(self.txtBspeedB)
177 177 self.txtBmodeB = QtGui.QLineEdit(self.grpDevB)
178 178 self.txtBmodeB.setObjectName("txtBmodeB")
179 179 self.verticalLayout_12.addWidget(self.txtBmodeB)
180 180 self.btnTdevB = QtGui.QPushButton(self.grpDevB)
181 181 self.btnTdevB.setObjectName("btnTdevB")
182 182 self.verticalLayout_12.addWidget(self.btnTdevB)
183 183 self.verticalLayout_16.addWidget(self.grpDevB)
184 184 self.gridLayout.addLayout(self.verticalLayout_16, 0, 1, 1, 1)
185 185 self.verticalLayout_17 = QtGui.QVBoxLayout()
186 186 self.verticalLayout_17.setObjectName("verticalLayout_17")
187 187 self.chkDevC = QtGui.QCheckBox(self.tabDconfig)
188 188 self.chkDevC.setChecked(True)
189 189 self.chkDevC.setObjectName("chkDevC")
190 190 self.verticalLayout_17.addWidget(self.chkDevC)
191 191 self.grpDevC = QtGui.QWidget(self.tabDconfig)
192 192 self.grpDevC.setObjectName("grpDevC")
193 193 self.verticalLayout_13 = QtGui.QVBoxLayout(self.grpDevC)
194 194 self.verticalLayout_13.setObjectName("verticalLayout_13")
195 195 self.txtDeviceC = QtGui.QLineEdit(self.grpDevC)
196 196 self.txtDeviceC.setObjectName("txtDeviceC")
197 197 self.verticalLayout_13.addWidget(self.txtDeviceC)
198 198 self.txtBspeedC = QtGui.QLineEdit(self.grpDevC)
199 199 self.txtBspeedC.setObjectName("txtBspeedC")
200 200 self.verticalLayout_13.addWidget(self.txtBspeedC)
201 201 self.txtBmodeC = QtGui.QLineEdit(self.grpDevC)
202 202 self.txtBmodeC.setObjectName("txtBmodeC")
203 203 self.verticalLayout_13.addWidget(self.txtBmodeC)
204 204 self.btnTdevC = QtGui.QPushButton(self.grpDevC)
205 205 self.btnTdevC.setObjectName("btnTdevC")
206 206 self.verticalLayout_13.addWidget(self.btnTdevC)
207 207 self.verticalLayout_17.addWidget(self.grpDevC)
208 208 self.gridLayout.addLayout(self.verticalLayout_17, 0, 2, 1, 1)
209 209 self.verticalLayout_18 = QtGui.QVBoxLayout()
210 210 self.verticalLayout_18.setObjectName("verticalLayout_18")
211 211 self.chkDevD = QtGui.QCheckBox(self.tabDconfig)
212 212 self.chkDevD.setChecked(True)
213 213 self.chkDevD.setObjectName("chkDevD")
214 214 self.verticalLayout_18.addWidget(self.chkDevD)
215 215 self.grpDevD = QtGui.QWidget(self.tabDconfig)
216 216 self.grpDevD.setObjectName("grpDevD")
217 217 self.verticalLayout_14 = QtGui.QVBoxLayout(self.grpDevD)
218 218 self.verticalLayout_14.setObjectName("verticalLayout_14")
219 219 self.txtDeviceD = QtGui.QLineEdit(self.grpDevD)
220 220 self.txtDeviceD.setObjectName("txtDeviceD")
221 221 self.verticalLayout_14.addWidget(self.txtDeviceD)
222 222 self.txtBspeedD = QtGui.QLineEdit(self.grpDevD)
223 223 self.txtBspeedD.setObjectName("txtBspeedD")
224 224 self.verticalLayout_14.addWidget(self.txtBspeedD)
225 225 self.txtBmodeD = QtGui.QLineEdit(self.grpDevD)
226 226 self.txtBmodeD.setObjectName("txtBmodeD")
227 227 self.verticalLayout_14.addWidget(self.txtBmodeD)
228 228 self.btnTdevD = QtGui.QPushButton(self.grpDevD)
229 229 self.btnTdevD.setObjectName("btnTdevD")
230 230 self.verticalLayout_14.addWidget(self.btnTdevD)
231 231 self.verticalLayout_18.addWidget(self.grpDevD)
232 232 self.gridLayout.addLayout(self.verticalLayout_18, 0, 3, 1, 1)
233 233 self.verticalLayout_19 = QtGui.QVBoxLayout()
234 234 self.verticalLayout_19.setObjectName("verticalLayout_19")
235 235 self.label_2 = QtGui.QLabel(self.tabDconfig)
236 236 self.label_2.setText("")
237 237 self.label_2.setObjectName("label_2")
238 238 self.verticalLayout_19.addWidget(self.label_2)
239 239 self.lblDevice = QtGui.QLabel(self.tabDconfig)
240 240 self.lblDevice.setObjectName("lblDevice")
241 241 self.verticalLayout_19.addWidget(self.lblDevice)
242 242 self.lblBspeed = QtGui.QLabel(self.tabDconfig)
243 243 self.lblBspeed.setObjectName("lblBspeed")
244 244 self.verticalLayout_19.addWidget(self.lblBspeed)
245 245 self.lblBmode = QtGui.QLabel(self.tabDconfig)
246 246 self.lblBmode.setObjectName("lblBmode")
247 247 self.verticalLayout_19.addWidget(self.lblBmode)
248 248 self.label = QtGui.QLabel(self.tabDconfig)
249 249 self.label.setText("")
250 250 self.label.setObjectName("label")
251 251 self.verticalLayout_19.addWidget(self.label)
252 252 self.gridLayout.addLayout(self.verticalLayout_19, 0, 4, 1, 1)
253 253 self.verticalLayout_3.addLayout(self.gridLayout)
254 254 self.horizontalLayout_9 = QtGui.QHBoxLayout()
255 255 self.horizontalLayout_9.setSizeConstraint(QtGui.QLayout.SetFixedSize)
256 256 self.horizontalLayout_9.setObjectName("horizontalLayout_9")
257 257 self.lblBprocess = QtGui.QLabel(self.tabDconfig)
258 258 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
259 259 sizePolicy.setHorizontalStretch(0)
260 260 sizePolicy.setVerticalStretch(0)
261 261 sizePolicy.setHeightForWidth(self.lblBprocess.sizePolicy().hasHeightForWidth())
262 262 self.lblBprocess.setSizePolicy(sizePolicy)
263 263 self.lblBprocess.setObjectName("lblBprocess")
264 264 self.horizontalLayout_9.addWidget(self.lblBprocess)
265 265 self.chkSimultaneously = QtGui.QCheckBox(self.tabDconfig)
266 266 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
267 267 sizePolicy.setHorizontalStretch(0)
268 268 sizePolicy.setVerticalStretch(0)
269 269 sizePolicy.setHeightForWidth(self.chkSimultaneously.sizePolicy().hasHeightForWidth())
270 270 self.chkSimultaneously.setSizePolicy(sizePolicy)
271 271 self.chkSimultaneously.setObjectName("chkSimultaneously")
272 272 self.horizontalLayout_9.addWidget(self.chkSimultaneously)
273 273 self.chkSequentially = QtGui.QCheckBox(self.tabDconfig)
274 274 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
275 275 sizePolicy.setHorizontalStretch(0)
276 276 sizePolicy.setVerticalStretch(0)
277 277 sizePolicy.setHeightForWidth(self.chkSequentially.sizePolicy().hasHeightForWidth())
278 278 self.chkSequentially.setSizePolicy(sizePolicy)
279 279 self.chkSequentially.setChecked(True)
280 280 self.chkSequentially.setObjectName("chkSequentially")
281 281 self.horizontalLayout_9.addWidget(self.chkSequentially)
282 282 self.verticalLayout_3.addLayout(self.horizontalLayout_9)
283 283 self.horizontalLayout_11 = QtGui.QHBoxLayout()
284 284 self.horizontalLayout_11.setSpacing(6)
285 285 self.horizontalLayout_11.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
286 286 self.horizontalLayout_11.setObjectName("horizontalLayout_11")
287 287 self.lblDcapacity = QtGui.QLabel(self.tabDconfig)
288 288 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
289 289 sizePolicy.setHorizontalStretch(0)
290 290 sizePolicy.setVerticalStretch(0)
291 291 sizePolicy.setHeightForWidth(self.lblDcapacity.sizePolicy().hasHeightForWidth())
292 292 self.lblDcapacity.setSizePolicy(sizePolicy)
293 293 self.lblDcapacity.setObjectName("lblDcapacity")
294 294 self.horizontalLayout_11.addWidget(self.lblDcapacity)
295 295 self.chkSalert = QtGui.QCheckBox(self.tabDconfig)
296 296 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
297 297 sizePolicy.setHorizontalStretch(0)
298 298 sizePolicy.setVerticalStretch(0)
299 299 sizePolicy.setHeightForWidth(self.chkSalert.sizePolicy().hasHeightForWidth())
300 300 self.chkSalert.setSizePolicy(sizePolicy)
301 301 self.chkSalert.setObjectName("chkSalert")
302 302 self.horizontalLayout_11.addWidget(self.chkSalert)
303 303 self.verticalLayout_3.addLayout(self.horizontalLayout_11)
304 304 self.horizontalLayout_10 = QtGui.QHBoxLayout()
305 305 self.horizontalLayout_10.setSizeConstraint(QtGui.QLayout.SetFixedSize)
306 306 self.horizontalLayout_10.setObjectName("horizontalLayout_10")
307 307 self.lstDcapacity = QtGui.QComboBox(self.tabDconfig)
308 308 self.lstDcapacity.setObjectName("lstDcapacity")
309 309 self.lstDcapacity.addItem("")
310 310 self.lstDcapacity.addItem("")
311 311 self.lstDcapacity.addItem("")
312 312 self.lstDcapacity.addItem("")
313 313 self.lstDcapacity.addItem("")
314 314 self.horizontalLayout_10.addWidget(self.lstDcapacity)
315 315 self.txtDcapacity = QtGui.QDoubleSpinBox(self.tabDconfig)
316 316 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed)
317 317 sizePolicy.setHorizontalStretch(0)
318 318 sizePolicy.setVerticalStretch(0)
319 319 sizePolicy.setHeightForWidth(self.txtDcapacity.sizePolicy().hasHeightForWidth())
320 320 self.txtDcapacity.setSizePolicy(sizePolicy)
321 321 self.txtDcapacity.setReadOnly(True)
322 322 self.txtDcapacity.setMinimum(100.0)
323 323 self.txtDcapacity.setMaximum(99999.99)
324 324 self.txtDcapacity.setProperty("value", 4482.27)
325 325 self.txtDcapacity.setObjectName("txtDcapacity")
326 326 self.horizontalLayout_10.addWidget(self.txtDcapacity)
327 327 self.chkPSgraphic = QtGui.QCheckBox(self.tabDconfig)
328 328 self.chkPSgraphic.setObjectName("chkPSgraphic")
329 329 self.horizontalLayout_10.addWidget(self.chkPSgraphic)
330 330 self.lineEdit_17 = QtGui.QLineEdit(self.tabDconfig)
331 331 self.lineEdit_17.setObjectName("lineEdit_17")
332 332 self.horizontalLayout_10.addWidget(self.lineEdit_17)
333 333 self.verticalLayout_3.addLayout(self.horizontalLayout_10)
334 334 self.tabWidget.addTab(self.tabDconfig, "")
335 335 self.tabSburn = QtGui.QWidget()
336 336 self.tabSburn.setObjectName("tabSburn")
337 337 self.verticalLayout_4 = QtGui.QVBoxLayout(self.tabSburn)
338 338 self.verticalLayout_4.setObjectName("verticalLayout_4")
339 339 self.widget_2 = QtGui.QWidget(self.tabSburn)
340 340 sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Minimum)
341 341 sizePolicy.setHorizontalStretch(0)
342 342 sizePolicy.setVerticalStretch(0)
343 343 sizePolicy.setHeightForWidth(self.widget_2.sizePolicy().hasHeightForWidth())
344 344 self.widget_2.setSizePolicy(sizePolicy)
345 345 self.widget_2.setMaximumSize(QtCore.QSize(500, 16777215))
346 346 self.widget_2.setObjectName("widget_2")
347 347 self.gridLayout_2 = QtGui.QGridLayout(self.widget_2)
348 348 self.gridLayout_2.setObjectName("gridLayout_2")
349 349 self.txtSTATUSb = QtGui.QLineEdit(self.widget_2)
350 350 self.txtSTATUSb.setReadOnly(True)
351 351 self.txtSTATUSb.setObjectName("txtSTATUSb")
352 352 self.gridLayout_2.addWidget(self.txtSTATUSb, 3, 2, 1, 1)
353 353 self.txtINFOa = QtGui.QLineEdit(self.widget_2)
354 354 self.txtINFOa.setReadOnly(True)
355 355 self.txtINFOa.setObjectName("txtINFOa")
356 356 self.gridLayout_2.addWidget(self.txtINFOa, 5, 1, 1, 1)
357 357 self.txtSTATUSa = QtGui.QLineEdit(self.widget_2)
358 358 self.txtSTATUSa.setReadOnly(True)
359 359 self.txtSTATUSa.setObjectName("txtSTATUSa")
360 360 self.gridLayout_2.addWidget(self.txtSTATUSa, 3, 1, 1, 1)
361 361 self.txtINFOb = QtGui.QLineEdit(self.widget_2)
362 362 self.txtINFOb.setReadOnly(True)
363 363 self.txtINFOb.setObjectName("txtINFOb")
364 364 self.gridLayout_2.addWidget(self.txtINFOb, 5, 2, 1, 1)
365 365 self.txtSTATUSc = QtGui.QLineEdit(self.widget_2)
366 366 self.txtSTATUSc.setReadOnly(True)
367 367 self.txtSTATUSc.setObjectName("txtSTATUSc")
368 368 self.gridLayout_2.addWidget(self.txtSTATUSc, 3, 3, 1, 1)
369 369 self.txtSTATUSd = QtGui.QLineEdit(self.widget_2)
370 370 self.txtSTATUSd.setReadOnly(True)
371 371 self.txtSTATUSd.setObjectName("txtSTATUSd")
372 372 self.gridLayout_2.addWidget(self.txtSTATUSd, 3, 4, 1, 1)
373 373 self.txtINFOd = QtGui.QLineEdit(self.widget_2)
374 374 self.txtINFOd.setReadOnly(True)
375 375 self.txtINFOd.setObjectName("txtINFOd")
376 376 self.gridLayout_2.addWidget(self.txtINFOd, 5, 4, 1, 1)
377 377 self.txtSETa = QtGui.QLineEdit(self.widget_2)
378 378 self.txtSETa.setReadOnly(True)
379 379 self.txtSETa.setObjectName("txtSETa")
380 380 self.gridLayout_2.addWidget(self.txtSETa, 6, 1, 1, 1)
381 381 self.txtSETb = QtGui.QLineEdit(self.widget_2)
382 382 self.txtSETb.setReadOnly(True)
383 383 self.txtSETb.setObjectName("txtSETb")
384 384 self.gridLayout_2.addWidget(self.txtSETb, 6, 2, 1, 1)
385 385 self.txtSETc = QtGui.QLineEdit(self.widget_2)
386 386 self.txtSETc.setReadOnly(True)
387 387 self.txtSETc.setObjectName("txtSETc")
388 388 self.gridLayout_2.addWidget(self.txtSETc, 6, 3, 1, 1)
389 389 self.txtSETd = QtGui.QLineEdit(self.widget_2)
390 390 self.txtSETd.setReadOnly(True)
391 391 self.txtSETd.setObjectName("txtSETd")
392 392 self.gridLayout_2.addWidget(self.txtSETd, 6, 4, 1, 1)
393 393 self.lblSTATUS = QtGui.QLabel(self.widget_2)
394 394 self.lblSTATUS.setObjectName("lblSTATUS")
395 395 self.gridLayout_2.addWidget(self.lblSTATUS, 3, 0, 1, 1)
396 396 self.lblINFO = QtGui.QLabel(self.widget_2)
397 397 self.lblINFO.setObjectName("lblINFO")
398 398 self.gridLayout_2.addWidget(self.lblINFO, 5, 0, 1, 1)
399 399 self.lblSET = QtGui.QLabel(self.widget_2)
400 400 self.lblSET.setObjectName("lblSET")
401 401 self.gridLayout_2.addWidget(self.lblSET, 6, 0, 1, 1)
402 402 self.lblDevA = QtGui.QLabel(self.widget_2)
403 403 self.lblDevA.setAlignment(QtCore.Qt.AlignCenter)
404 404 self.lblDevA.setObjectName("lblDevA")
405 405 self.gridLayout_2.addWidget(self.lblDevA, 0, 1, 1, 1)
406 406 self.lblDevB = QtGui.QLabel(self.widget_2)
407 407 self.lblDevB.setAlignment(QtCore.Qt.AlignCenter)
408 408 self.lblDevB.setObjectName("lblDevB")
409 409 self.gridLayout_2.addWidget(self.lblDevB, 0, 2, 1, 1)
410 410 self.lblDevC = QtGui.QLabel(self.widget_2)
411 411 self.lblDevC.setAlignment(QtCore.Qt.AlignCenter)
412 412 self.lblDevC.setObjectName("lblDevC")
413 413 self.gridLayout_2.addWidget(self.lblDevC, 0, 3, 1, 1)
414 414 self.lblDevD = QtGui.QLabel(self.widget_2)
415 415 self.lblDevD.setAlignment(QtCore.Qt.AlignCenter)
416 416 self.lblDevD.setObjectName("lblDevD")
417 417 self.gridLayout_2.addWidget(self.lblDevD, 0, 4, 1, 1)
418 418 self.txtINFOc = QtGui.QLineEdit(self.widget_2)
419 419 self.txtINFOc.setReadOnly(True)
420 420 self.txtINFOc.setObjectName("txtINFOc")
421 421 self.gridLayout_2.addWidget(self.txtINFOc, 5, 3, 1, 1)
422 422 self.verticalLayout_4.addWidget(self.widget_2)
423 423 self.txtSburn = QtGui.QTextEdit(self.tabSburn)
424 424 self.txtSburn.setReadOnly(True)
425 425 self.txtSburn.setObjectName("txtSburn")
426 426 self.verticalLayout_4.addWidget(self.txtSburn)
427 427 self.tabWidget.addTab(self.tabSburn, "")
428 428 self.verticalLayout.addWidget(self.tabWidget)
429 429 self.txtInfo = QtGui.QTextEdit(self.centralwidget)
430 430 self.txtInfo.setReadOnly(True)
431 431 self.txtInfo.setObjectName("txtInfo")
432 432 self.verticalLayout.addWidget(self.txtInfo)
433 433 self.horizontalLayout_2 = QtGui.QHBoxLayout()
434 434 self.horizontalLayout_2.setSizeConstraint(QtGui.QLayout.SetDefaultConstraint)
435 435 self.horizontalLayout_2.setObjectName("horizontalLayout_2")
436 436 self.btnGbkp = QtGui.QPushButton(self.centralwidget)
437 437 self.btnGbkp.setEnabled(False)
438 438 self.btnGbkp.setObjectName("btnGbkp")
439 439 self.horizontalLayout_2.addWidget(self.btnGbkp)
440 440 self.btnRestart = QtGui.QPushButton(self.centralwidget)
441 441 self.btnRestart.setEnabled(False)
442 442 self.btnRestart.setObjectName("btnRestart")
443 443 self.horizontalLayout_2.addWidget(self.btnRestart)
444 444 self.btnStartburn = QtGui.QPushButton(self.centralwidget)
445 445 self.btnStartburn.setEnabled(False)
446 446 self.btnStartburn.setObjectName("btnStartburn")
447 447 self.horizontalLayout_2.addWidget(self.btnStartburn)
448 448 self.btnStopburn = QtGui.QPushButton(self.centralwidget)
449 449 self.btnStopburn.setEnabled(False)
450 450 self.btnStopburn.setObjectName("btnStopburn")
451 451 self.horizontalLayout_2.addWidget(self.btnStopburn)
452 452 self.verticalLayout.addLayout(self.horizontalLayout_2)
453 453 MainWindow.setCentralWidget(self.centralwidget)
454 454 self.menubar = QtGui.QMenuBar(MainWindow)
455 self.menubar.setGeometry(QtCore.QRect(0, 0, 809, 25))
455 self.menubar.setGeometry(QtCore.QRect(0, 0, 809, 21))
456 456 self.menubar.setObjectName("menubar")
457 457 self.menuFile = QtGui.QMenu(self.menubar)
458 458 self.menuFile.setObjectName("menuFile")
459 459 self.menuParameters = QtGui.QMenu(self.menubar)
460 460 self.menuParameters.setObjectName("menuParameters")
461 461 self.menuHelp = QtGui.QMenu(self.menubar)
462 462 self.menuHelp.setObjectName("menuHelp")
463 463 MainWindow.setMenuBar(self.menubar)
464 464 self.statusbar = QtGui.QStatusBar(MainWindow)
465 465 self.statusbar.setObjectName("statusbar")
466 466 MainWindow.setStatusBar(self.statusbar)
467 467 self.actionChange_Parameters = QtGui.QAction(MainWindow)
468 468 self.actionChange_Parameters.setObjectName("actionChange_Parameters")
469 469 self.actionSave_Config = QtGui.QAction(MainWindow)
470 470 self.actionSave_Config.setObjectName("actionSave_Config")
471 471 self.actionQuit = QtGui.QAction(MainWindow)
472 472 self.actionQuit.setObjectName("actionQuit")
473 473 self.actionAbout = QtGui.QAction(MainWindow)
474 474 self.actionAbout.setObjectName("actionAbout")
475 475 self.menuFile.addAction(self.actionSave_Config)
476 476 self.menuFile.addAction(self.actionQuit)
477 477 self.menuParameters.addAction(self.actionChange_Parameters)
478 478 self.menuHelp.addAction(self.actionAbout)
479 479 self.menubar.addAction(self.menuFile.menuAction())
480 480 self.menubar.addAction(self.menuParameters.menuAction())
481 481 self.menubar.addAction(self.menuHelp.menuAction())
482 482
483 483 self.retranslateUi(MainWindow)
484 484 self.tabWidget.setCurrentIndex(0)
485 485 self.lstDcapacity.setCurrentIndex(2)
486 486 QtCore.QObject.connect(self.chkSequentially, QtCore.SIGNAL("clicked()"), self.chkSimultaneously.toggle)
487 487 QtCore.QObject.connect(self.chkSimultaneously, QtCore.SIGNAL("clicked()"), self.chkSequentially.toggle)
488 488 QtCore.QObject.connect(self.chkDevA, QtCore.SIGNAL("toggled(bool)"), self.grpDevA.setEnabled)
489 489 QtCore.QObject.connect(self.chkDevB, QtCore.SIGNAL("toggled(bool)"), self.grpDevB.setEnabled)
490 490 QtCore.QObject.connect(self.chkDevC, QtCore.SIGNAL("toggled(bool)"), self.grpDevC.setEnabled)
491 491 QtCore.QObject.connect(self.chkDevD, QtCore.SIGNAL("toggled(bool)"), self.grpDevD.setEnabled)
492 492 QtCore.QMetaObject.connectSlotsByName(MainWindow)
493 493 MainWindow.setTabOrder(self.txtDpath, self.btnDpath)
494 494 MainWindow.setTabOrder(self.btnDpath, self.txtRpath)
495 495 MainWindow.setTabOrder(self.txtRpath, self.btnRpath)
496 496 MainWindow.setTabOrder(self.btnRpath, self.lstDtype)
497 497 MainWindow.setTabOrder(self.lstDtype, self.txtDtype)
498 498 MainWindow.setTabOrder(self.txtDtype, self.chkMST)
499 499 MainWindow.setTabOrder(self.chkMST, self.txtElabel)
500 500 MainWindow.setTabOrder(self.txtElabel, self.lstStartDay)
501 501 MainWindow.setTabOrder(self.lstStartDay, self.lstStopDay)
502 502 MainWindow.setTabOrder(self.lstStopDay, self.chkSimultaneously)
503 503 MainWindow.setTabOrder(self.chkSimultaneously, self.chkSequentially)
504 504 MainWindow.setTabOrder(self.chkSequentially, self.chkSalert)
505 505 MainWindow.setTabOrder(self.chkSalert, self.lstDcapacity)
506 506 MainWindow.setTabOrder(self.lstDcapacity, self.chkPSgraphic)
507 507 MainWindow.setTabOrder(self.chkPSgraphic, self.lineEdit_17)
508 508 MainWindow.setTabOrder(self.lineEdit_17, self.txtSTATUSa)
509 509 MainWindow.setTabOrder(self.txtSTATUSa, self.txtSTATUSb)
510 510 MainWindow.setTabOrder(self.txtSTATUSb, self.txtSTATUSc)
511 511 MainWindow.setTabOrder(self.txtSTATUSc, self.txtSTATUSd)
512 512 MainWindow.setTabOrder(self.txtSTATUSd, self.txtINFOa)
513 513 MainWindow.setTabOrder(self.txtINFOa, self.txtINFOb)
514 514 MainWindow.setTabOrder(self.txtINFOb, self.txtINFOc)
515 515 MainWindow.setTabOrder(self.txtINFOc, self.txtINFOd)
516 516 MainWindow.setTabOrder(self.txtINFOd, self.txtSETa)
517 517 MainWindow.setTabOrder(self.txtSETa, self.txtSETb)
518 518 MainWindow.setTabOrder(self.txtSETb, self.txtSETc)
519 519 MainWindow.setTabOrder(self.txtSETc, self.txtSETd)
520 520 MainWindow.setTabOrder(self.txtSETd, self.tabWidget)
521 521 MainWindow.setTabOrder(self.tabWidget, self.txtSburn)
522 522 MainWindow.setTabOrder(self.txtSburn, self.btnGbkp)
523 523 MainWindow.setTabOrder(self.btnGbkp, self.btnRestart)
524 524 MainWindow.setTabOrder(self.btnRestart, self.btnStartburn)
525 525 MainWindow.setTabOrder(self.btnStartburn, self.btnStopburn)
526 526
527 527 def retranslateUi(self, MainWindow):
528 528 MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "JRO BACKUP MANAGER", None, QtGui.QApplication.UnicodeUTF8))
529 529 self.btnDpath.setText(QtGui.QApplication.translate("MainWindow", "Data Path", None, QtGui.QApplication.UnicodeUTF8))
530 530 self.btnRpath.setText(QtGui.QApplication.translate("MainWindow", "Resource Path", None, QtGui.QApplication.UnicodeUTF8))
531 531 self.lblDtype.setText(QtGui.QApplication.translate("MainWindow", "Data Type", None, QtGui.QApplication.UnicodeUTF8))
532 532 self.lstDtype.setItemText(0, QtGui.QApplication.translate("MainWindow", "Raw Data", None, QtGui.QApplication.UnicodeUTF8))
533 533 self.lstDtype.setItemText(1, QtGui.QApplication.translate("MainWindow", "Process Data", None, QtGui.QApplication.UnicodeUTF8))
534 534 self.lstDtype.setItemText(2, QtGui.QApplication.translate("MainWindow", "BLTR Data", None, QtGui.QApplication.UnicodeUTF8))
535 535 self.lstDtype.setItemText(3, QtGui.QApplication.translate("MainWindow", "Other", None, QtGui.QApplication.UnicodeUTF8))
536 536 self.txtDtype.setText(QtGui.QApplication.translate("MainWindow", "r", None, QtGui.QApplication.UnicodeUTF8))
537 537 self.chkMST.setText(QtGui.QApplication.translate("MainWindow", "MST-ISR Data", None, QtGui.QApplication.UnicodeUTF8))
538 538 self.lblElabel.setText(QtGui.QApplication.translate("MainWindow", "Exp. Label at device", None, QtGui.QApplication.UnicodeUTF8))
539 539 self.lblCopys.setText(QtGui.QApplication.translate("MainWindow", "Copys", None, QtGui.QApplication.UnicodeUTF8))
540 540 self.lblStartDay.setText(QtGui.QApplication.translate("MainWindow", "Start Day:", None, QtGui.QApplication.UnicodeUTF8))
541 541 self.lblStopDay.setText(QtGui.QApplication.translate("MainWindow", "Stop Day:", None, QtGui.QApplication.UnicodeUTF8))
542 542 self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabParameters), QtGui.QApplication.translate("MainWindow", "Parameters", None, QtGui.QApplication.UnicodeUTF8))
543 543 self.chkDevA.setText(QtGui.QApplication.translate("MainWindow", "Dev A", None, QtGui.QApplication.UnicodeUTF8))
544 544 self.txtBspeedA.setText(QtGui.QApplication.translate("MainWindow", "16", None, QtGui.QApplication.UnicodeUTF8))
545 545 self.txtBmodeA.setText(QtGui.QApplication.translate("MainWindow", "-sao", None, QtGui.QApplication.UnicodeUTF8))
546 546 self.btnTdevA.setText(QtGui.QApplication.translate("MainWindow", "Test DevA", None, QtGui.QApplication.UnicodeUTF8))
547 547 self.chkDevB.setText(QtGui.QApplication.translate("MainWindow", "Dev B", None, QtGui.QApplication.UnicodeUTF8))
548 548 self.txtBspeedB.setText(QtGui.QApplication.translate("MainWindow", "16", None, QtGui.QApplication.UnicodeUTF8))
549 549 self.txtBmodeB.setText(QtGui.QApplication.translate("MainWindow", "-sao", None, QtGui.QApplication.UnicodeUTF8))
550 550 self.btnTdevB.setText(QtGui.QApplication.translate("MainWindow", "Test DevB", None, QtGui.QApplication.UnicodeUTF8))
551 551 self.chkDevC.setText(QtGui.QApplication.translate("MainWindow", "Dev C", None, QtGui.QApplication.UnicodeUTF8))
552 552 self.txtBspeedC.setText(QtGui.QApplication.translate("MainWindow", "16", None, QtGui.QApplication.UnicodeUTF8))
553 553 self.txtBmodeC.setText(QtGui.QApplication.translate("MainWindow", "-sao", None, QtGui.QApplication.UnicodeUTF8))
554 554 self.btnTdevC.setText(QtGui.QApplication.translate("MainWindow", "Test DevC", None, QtGui.QApplication.UnicodeUTF8))
555 555 self.chkDevD.setText(QtGui.QApplication.translate("MainWindow", "Dev D", None, QtGui.QApplication.UnicodeUTF8))
556 556 self.txtBspeedD.setText(QtGui.QApplication.translate("MainWindow", "16", None, QtGui.QApplication.UnicodeUTF8))
557 557 self.txtBmodeD.setText(QtGui.QApplication.translate("MainWindow", "-sao", None, QtGui.QApplication.UnicodeUTF8))
558 558 self.btnTdevD.setText(QtGui.QApplication.translate("MainWindow", "Test DevD", None, QtGui.QApplication.UnicodeUTF8))
559 559 self.lblDevice.setText(QtGui.QApplication.translate("MainWindow", "Device", None, QtGui.QApplication.UnicodeUTF8))
560 560 self.lblBspeed.setText(QtGui.QApplication.translate("MainWindow", "Burn Speed", None, QtGui.QApplication.UnicodeUTF8))
561 561 self.lblBmode.setText(QtGui.QApplication.translate("MainWindow", "Burn Mode", None, QtGui.QApplication.UnicodeUTF8))
562 562 self.lblBprocess.setText(QtGui.QApplication.translate("MainWindow", "Burning process", None, QtGui.QApplication.UnicodeUTF8))
563 563 self.chkSimultaneously.setText(QtGui.QApplication.translate("MainWindow", "Simultaneously", None, QtGui.QApplication.UnicodeUTF8))
564 564 self.chkSequentially.setText(QtGui.QApplication.translate("MainWindow", "Sequentially", None, QtGui.QApplication.UnicodeUTF8))
565 565 self.lblDcapacity.setText(QtGui.QApplication.translate("MainWindow", "Device Capacity (MB)", None, QtGui.QApplication.UnicodeUTF8))
566 566 self.chkSalert.setText(QtGui.QApplication.translate("MainWindow", "Sound Alert", None, QtGui.QApplication.UnicodeUTF8))
567 567 self.lstDcapacity.setItemText(0, QtGui.QApplication.translate("MainWindow", "BluRay [25.0 GB]", None, QtGui.QApplication.UnicodeUTF8))
568 568 self.lstDcapacity.setItemText(1, QtGui.QApplication.translate("MainWindow", "DVD2 [8.5 GB]", None, QtGui.QApplication.UnicodeUTF8))
569 569 self.lstDcapacity.setItemText(2, QtGui.QApplication.translate("MainWindow", "DVD1 [4.7 GB]", None, QtGui.QApplication.UnicodeUTF8))
570 570 self.lstDcapacity.setItemText(3, QtGui.QApplication.translate("MainWindow", "CD [0.7 GB]", None, QtGui.QApplication.UnicodeUTF8))
571 571 self.lstDcapacity.setItemText(4, QtGui.QApplication.translate("MainWindow", "Other [? GB]", None, QtGui.QApplication.UnicodeUTF8))
572 572 self.chkPSgraphic.setText(QtGui.QApplication.translate("MainWindow", "PS Graphic", None, QtGui.QApplication.UnicodeUTF8))
573 573 self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabDconfig), QtGui.QApplication.translate("MainWindow", "Device Config.", None, QtGui.QApplication.UnicodeUTF8))
574 574 self.lblSTATUS.setText(QtGui.QApplication.translate("MainWindow", "STATUS", None, QtGui.QApplication.UnicodeUTF8))
575 575 self.lblINFO.setText(QtGui.QApplication.translate("MainWindow", "INFO", None, QtGui.QApplication.UnicodeUTF8))
576 576 self.lblSET.setText(QtGui.QApplication.translate("MainWindow", "SET", None, QtGui.QApplication.UnicodeUTF8))
577 577 self.lblDevA.setText(QtGui.QApplication.translate("MainWindow", "DEV A", None, QtGui.QApplication.UnicodeUTF8))
578 578 self.lblDevB.setText(QtGui.QApplication.translate("MainWindow", "DEV B", None, QtGui.QApplication.UnicodeUTF8))
579 579 self.lblDevC.setText(QtGui.QApplication.translate("MainWindow", "DEV C", None, QtGui.QApplication.UnicodeUTF8))
580 580 self.lblDevD.setText(QtGui.QApplication.translate("MainWindow", "DEV D", None, QtGui.QApplication.UnicodeUTF8))
581 581 self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabSburn), QtGui.QApplication.translate("MainWindow", "Status Burn", None, QtGui.QApplication.UnicodeUTF8))
582 582 self.btnGbkp.setText(QtGui.QApplication.translate("MainWindow", "Generate Bkp", None, QtGui.QApplication.UnicodeUTF8))
583 583 self.btnRestart.setText(QtGui.QApplication.translate("MainWindow", "Restart", None, QtGui.QApplication.UnicodeUTF8))
584 584 self.btnStartburn.setText(QtGui.QApplication.translate("MainWindow", "Start Burn", None, QtGui.QApplication.UnicodeUTF8))
585 585 self.btnStopburn.setText(QtGui.QApplication.translate("MainWindow", "Stop Burn", None, QtGui.QApplication.UnicodeUTF8))
586 586 self.menuFile.setTitle(QtGui.QApplication.translate("MainWindow", "File", None, QtGui.QApplication.UnicodeUTF8))
587 587 self.menuParameters.setTitle(QtGui.QApplication.translate("MainWindow", "Parameters", None, QtGui.QApplication.UnicodeUTF8))
588 588 self.menuHelp.setTitle(QtGui.QApplication.translate("MainWindow", "Help", None, QtGui.QApplication.UnicodeUTF8))
589 589 self.actionChange_Parameters.setText(QtGui.QApplication.translate("MainWindow", "Change Parameters", None, QtGui.QApplication.UnicodeUTF8))
590 590 self.actionSave_Config.setText(QtGui.QApplication.translate("MainWindow", "Save Config", None, QtGui.QApplication.UnicodeUTF8))
591 591 self.actionQuit.setText(QtGui.QApplication.translate("MainWindow", "Quit", None, QtGui.QApplication.UnicodeUTF8))
592 592 self.actionAbout.setText(QtGui.QApplication.translate("MainWindow", "About", None, QtGui.QApplication.UnicodeUTF8))
593 593
594 594
595 595 if __name__ == "__main__":
596 596 import sys
597 597 app = QtGui.QApplication(sys.argv)
598 598 MainWindow = QtGui.QMainWindow()
599 599 ui = Ui_MainWindow()
600 600 ui.setupUi(MainWindow)
601 601 MainWindow.show()
602 602 sys.exit(app.exec_())
603 603
General Comments 0
You need to be logged in to leave comments. Login now