##// END OF EJS Templates
3ro segun diagrama...
ralonso -
r78:79
parent child
Show More
@@ -1,321 +1,331
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 11 import shutil
12 import functions2
12 13
13 14 #--------------------------------------------- Entero a cadena agregando ceros delante -------------------------------------------------
14 15
15 16 def i2s(var_n, var_length=4):
16 17 var_n2=str(var_n)
17 18 while len(var_n2) < var_length:
18 19 var_n2 = "0"+var_n2
19 20 return var_n2
20 21
21 22
22 23 #----------------------------------------- Se verifica que la ruta exista y sea un directorio -------------------------------------------------
23 24
24 25 def dir_exists(var_dir, self):
25 26 if os.path.isdir(var_dir):
26 27 return True
27 28 else:
28 29 self.txtInfo.append("Incorrect path:" + str(var_dir))
29 30 return False
30 31
31 32
32 33 #-------------------------------- Se buscan los archivos del tipo especificado y se cargan las fechas -----------------------------
33 34
34 35 def load_days(self):
35 36
36 37 self.var_list=[]
37 38 self.lstStartDay.clear()
38 39 self.lstStopDay.clear()
39 40
40 41 if self.statusDpath == False:
41 42 self.btnGbkp.setEnabled(False)
42 43 return
43 44
44 45 if self.var_Dtype == '':
45 46 return
46 47
47 48 var_cmd="find " + str(self.var_Dpath) + " -name *."+ str(self.var_Dtype) +" | awk -F/ '{print substr($NF,2,7)}' | sort| uniq"
48 49 output=commands.getstatusoutput(var_cmd)[1]
49 50
50 51 #Si no se encuentra ningun archivo
51 52 if len(output) == 0:
52 53 self.txtInfo.append("File not found")
53 54 self.btnGbkp.setEnabled(False)
54 55 return
55 56
56 57 #Se cargan las listas para seleccionar StartDay y StopDay (QComboBox)
57 58 for i in range(0, (len(output)+1)/8):
58 59 self.var_list.append(output[8*i:8*(i+1)-1])
59 60
60 61 for i in self.var_list:
61 62 self.lstStartDay.addItem(i)
62 63 self.lstStopDay.addItem(i)
63 64 self.lstStopDay.setCurrentIndex(self.lstStartDay.count()-1)
64 65
65 66 get_sub_list(self)
66 67 self.btnGbkp.setEnabled(True)
67 68
68 69
69 70 #-------------------------------------------------- Obtiene el rango de las fechas seleccionadas -----------------------------------------
70 71
71 72 def get_sub_list(self):
72 73 self.var_sublist=[]
73 74 for i in self.var_list[self.lstStartDay.currentIndex():self.lstStartDay.currentIndex() + self.lstStopDay.currentIndex()+1]:
74 75 self.var_sublist.append(i)
75 76
76 77
77 78 #----------------------------------------------------- Verifica los parametros faltantes -----------------------------------------------------------
78 79
79 80 def validate_parameters(self):
80 81 #Verifica que las ruta del proyecto sea valida
81 82 if self.statusRpath == False:
82 83 self.txtInfo.append("Incorrect proyect path")
83 84 return False
84 85
85 86 #Verifica la etiqueta
86 87 if len(self.var_Elabel) == 0:
87 88 self.txtInfo.append("Enter label")
88 89 return False
89 90
90 91 return True
91 92
92 93
93 94 #------------------------------------------------- Crea directorios en la ruta indicada -----------------------------------------------------------
94 95
95 96 def make_dirs(list_dirs, self):
96 97 """
97 98
98 99 """
99 100
100 101 for var_dir in list_dirs:
101 102 shutil.rmtree(self.var_Rpath+'/'+var_dir, True)
102 103 var_output=commands.getstatusoutput("mkdir -p "+self.var_Rpath+'/'+var_dir)[0]
103 104 if var_output != 0:
104 105 self.txtInfo.append("Error creating directory: "+var_dir+", output_error:" + str(var_output))
105 106 return False
106 107 self.txtInfo.append('Directories created correctly')
107 108 return True
108 109
109 110
110 111 #-------------------------------------------- Busca los archivos con los parametros de busqueda ---------------------------------------
111 112
112 113 def list_files(self):
113 114 var_files_list=[]
114 115 for var_doy in self.var_sublist:
115 116 var_cmd="find " + str(self.var_Dpath) + " -name ?"+var_doy+"???."+ str(self.var_Dtype) + " |sort"
116 117 var_output=commands.getstatusoutput(var_cmd)[1]
117 118 for var_file in var_output.split():
118 119 var_files_list.append(var_file) #Almacena cada archivo en la lista
119 120 return var_files_list
120 121
121 122
122 123 #--------------- Genera la lista de archivos .dat que contienen los archivos a grabar en cada DVD -----------------------
123 124
124 125 def make_files_dat(var_files_list, self):
125 126 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
126 127 var_n=1 #Numero del DVD actual
127 128 var_tmp=0 #Se usa para acumular el tamaΓ±o de los archivos de la lista
128 129 var_files_list_2=[] #Se usa para almacenar la lista de archivos agrbar en cada DVD
129 130
130 131 for i in var_files_list: #Se asignan en i los archivos de la lista
131 132
132 133 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
133 134 var_tmp += var_size_i #Se acumulan el tamaΓ±o de los archivos de la lista
134 135
135 136 #Si el tamaΓ±o acumulado es mayor que el de el DVD
136 137 if var_tmp > (self.var_Dcapacity * 1024):
137 138 var_tmp -= var_size_i #se quita el tamaΓ±o sumado para mostrar el tamaΓ±o real
138 139 #se crea un archivo con numeral en el sufijo y extension .dat
139 140 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
140 141 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
141 142 for line in var_files_list_2:
142 143 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
143 144 var_file.write(var_tmp_path+'='+line+'\n')
144 145 var_file.close()
145 146
146 147 var_tmp = var_size_i #Se asigna a la variable el tamaΓ±o del archivo actual
147 148 var_files_list_2=[] #Se reinicia la lista
148 149 var_n += 1
149 150 var_files_list_2.append(i)
150 151
151 152 #se crea un archivo con numeral en el sufijo y extension .dat
152 153 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
153 154 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
154 155 for line in var_files_list_2:
155 156 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
156 157 var_file.write(var_tmp_path+'='+line+'\n')
157 158 var_file.close()
158 159
159 160 self.txtInfo.append("configuration files created")
160 161 return var_n
161 162
162 163
163 164 #------------------------------ Genera los archivos .print con los cuales se creara los postscript -----------------------------------
164 165
165 166 def make_files_print(self):
166 167
167 168 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
168 169 var_Rpath_gpath=self.var_Rpath+"/gpath" #Ruta de los archivos postscript
169 170 var_labels=[]
170 171 for m in range (0, self.txtPSgraphic.value() - 1):
171 172 var_lines = "\n" * 9
172 173 var_labels.append(var_lines)
173 174
174 175 # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .print
175 176 for var_n in range(1, self.var_Discs + 1):
176 177
177 178 #se abren los archivos .dat en modo lectura
178 179 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","r")
179 180 lines=var_file.readlines() # Se lee las lineas en el archivo y se almacenan en la lista
180 181 var_file.close()
181 182 list_files=[]
182 183 var_lines=[]
183 184
184 185 for j in range(0, len(lines)):
185 186
186 187 if j == 0:
187 188 var_first_folder = lines[j].split('=')[0]
188 189 var_first_file = (lines[j].split('=')[1])[:-1]
189 190 continue
190 191
191 192 var_tmp_folder = lines[j].split('=')[0]
192 193 var_tmp_file = (lines[j].split('=')[1])[:-1]
193 194
194 195 # Si el subfolder superior o el DOY del archivo actual y el anterior son diferentes
195 196 if (var_tmp_folder != var_first_folder) or (var_tmp_file[0:-5] != var_first_file[0:-5]):
196 197 var_last_file = (lines[j-1].split('=')[1])[:-1]
197 198 list_files.append([var_first_folder, var_first_file, var_last_file])
198 199
199 200 var_first_folder = lines[j].split('=')[0]
200 201 var_first_file = (lines[j].split('=')[1])[:-1]
201 202
202 203 var_last_file = (lines[-1].split('=')[1])[:-1]
203 204 list_files.append([var_first_folder, var_first_file, var_last_file])
204 205
205 206 var_lines2 = lines_print(list_files, self.var_Elabel)
206 207
207 208 for k in range(0, len(var_lines2) / 5):
208 209 var_lines=["\n"]
209 210 var_lines.append(" "+self.var_Elabel+" "+i2s(var_n)+"/"+i2s(self.var_Discs)+"\n")
210 var_lines.append("Year Doy Folder"+" "*6+"Set"+" "*9+"Time range\n")
211 var_lines.append("Year Doy Folder"+" "*9+"Set"+" "*11+"Time range\n")
211 212 var_lines.extend(var_lines2[(5*k):(5*(k+1))])
212 213 var_lines.append("\n")
213 214 var_labels.append(var_lines)
214 215
215 216 for i in range(0, (len(var_labels) // 33) +1 ):
216 217 var_file=var_Rpath_gpath+"/"+self.var_Elabel+"_"+i2s(i+1)
217 218 file_ps = open(var_file+".print","w")
218 219 if i == (len(var_labels) // 33):
219 220 var_sub_labels = var_labels[33*i:]
220 221 else:
221 222 var_sub_labels = var_labels[33*i:33*(i+1)]
222 223
223 224 for label in var_sub_labels:
224 225 for line in label:
225 226 file_ps.write(line)
226 227 file_ps.close()
227 228 var_cmd="enscript "+var_file+".print -p "+var_file+".ps -f Times-Roman7 " \
228 229 +" -3R -j -B --margins=21.25:20.4:25.51:20 --media=A4"
229 230 var_output=commands.getstatusoutput(var_cmd)[0]
230 231
231 232
232 233 def lines_print(list_files, var_Elabel):
233 234 """
234 235 Devuelve las lineas del rango de archivos de cada etiqueta segun el formato
235 236 """
236 237 var_lines=[]
237 238 for i in list_files:
238 239
239 240 # Si el archivo se grabara directamente en la / del DVD y no en un /directorio/
240 241 # se usa la etiqueta para indicar la parte de la etiqueta donde va el subdirectorio
241 242 if i[0] == '/':
242 243 var_folder = var_Elabel
243 244 else:
244 245 var_folder = i[0].split('/')[-2]
245 246
246 247 var_first_file = i[1]
247 248 var_last_file = i[2]
248 249
249 250 var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1]
250 251 var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1]
251 252
252 253 var_lines.append(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+"-"
253 254 +var_last_file[-5:-2]+" "+var_date_first_file+"-"+var_date_last_file+"\n")
254 255 #Nos aseguramos que sea un mutiplo de 5
255 256 while (len(var_lines) % 5) != 0:
256 257 var_lines.append("\n")
257 258
258 259 return var_lines
259 260
260 261 #---------------------------------------comandos para el proceso de grabacion ------------------------------------------
261 262 def cmd_iso(self):
262 263 var_Rpath_ppath=self.var_Rpath+"/ppath"
263 264 var_Rpath_iso=self.var_Rpath+"/iso"
264 265 #comando para la creacion del archivo.iso
265 266 file_dat=var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(self.var_disc_n)+".dat"
266 267 file_iso=var_Rpath_iso+"/"+i2s(self.var_disc_n)+".iso"
267 268 var_cmd = 'genisoimage -hide-joliet-trans-tbl -joliet-long -r '
268 269 var_cmd += ' -A '+self.var_Elabel+' -V '+self.var_Elabel
269 270 var_cmd += ' -graft-points -path-list '+ file_dat+' -o '+file_iso
270 271 return var_cmd
271 272
272 273 def cmd_burn(self):
273 274 var_Rpath_iso=self.var_Rpath+"/iso"
274 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
275 file_iso=var_Rpath_iso+"/"+i2s(self.var_disc_n)+".iso"
275 276
276 277 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
277 278 var_dev_tmp = self.var_devices[var_index]
278 279
279 280 var_cmd = "wodim -v dev="+var_dev_tmp+" speed=16 "+ file_iso
280 281 return var_cmd
282
283 def cmd_check(self):
284 var_cmd = "echo 'function check'"
285 return var_cmd
281 286
282 287 def remove_iso(self):
283 288 var_Rpath_iso=self.var_Rpath+"/iso"
284 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
285
286 self.txtInfo.append("Deleting iso file: "+functions.i2s(self.var_disc_n)+".iso")
287
289 file_iso=var_Rpath_iso+"/"+i2s(self.var_disc_n)+".iso"
290 # shutil.rmtree(self.var_Rpath+'/'+var_dir, True)
288 291 if os.path.isfile(file_iso):
289 292 os.remove(file_iso)
290 293
291 294 #Si es el ultimo disco se termina el proceso
292 295 def is_last_disc_and_copy(self):
293 296 if self.var_disc_n == self.var_Discs and self.var_copy_n == self.var_Copys:
294 297 self.function_final()
295 298 else:
296 299 next_disc(self)
297 300
298 301 #Define cual es el siguiente disco a grabar y que paso seguir
299 302 def next_disc(self, error = False):
300 303 if self.var_copy_n == self.var_Copys:
304 #borrado del iso
305 self.txtInfo.append("Deleting iso file: "+i2s(self.var_disc_n)+".iso")
306 remove_iso(self)
307
301 308 self.var_disc_n += 1
302 309 self.var_copy_n = 1
303 310 self.var_step = 0
304 311
305 312 else:
306 313 self.var_copy_n += 1
307 314 self.var_step = 1
308 315
316 functions2.make_burning_conf(self) # Si el proceso no ha sido detenido manualmente
317 #crea el archivo burning.conf para el seguimiento de los discos grabados
318
309 319 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
310 320
311 321 self.txtInfo.append("NEXT DISC: "+str(self.var_disc_n)+" COPY: "+str(self.var_copy_n)
312 322 +" INDEX: "+str(var_index)+" STEP: "+str(self.var_step))
313 323 self.txtInfo.append("\n")
314 324
315 325 if var_index == 0 :
316 326 self.function_eject()
317 327
318 328 elif self.var_step == 0:
319 329 self.function_iso()
320 330 elif self.var_step == 1:
321 331 self.function_burn()
@@ -1,246 +1,246
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 10 #----------------------------------------------------- Deteccion de los dispositivos de grabacion ---------------------------------------------------------------
11 11
12 12 def detect_devices(self):
13 13 """
14 14 Deteccion de los dispositvos de grabacion
15 15 """
16 16 #var_cmd="wodim --devices | grep /dev/ | awk -F\' '{print $2}'" #Funciona en consola pero no en python ΒΏ?
17 17 var_cmd="wodim --devices | grep /dev/ | awk '{print $2}' | awk -F= '{print $2}'"
18 18
19 19 var_output = commands.getstatusoutput(var_cmd)
20 20 if var_output[0] != 0:
21 21 self.txtInfo.append("No recording devices")
22 22 else:
23 23 var_devices = var_output[1].split('\n')
24 24
25 25 var_tmp=[]
26 26 for i in range(0, 4):
27 27 if i < len(var_devices):
28 28 var_len = len(var_devices[i])
29 29 var_tmp.append(var_devices[i][1:var_len - 1])
30 30 else:
31 31 var_tmp.append('')
32 32
33 33 #Se escriben los dispostivos correspodientes, si existen
34 34 self.txtDeviceA.setText(str(var_tmp[0]))
35 35 self.txtDeviceB.setText(str(var_tmp[1]))
36 36 self.txtDeviceC.setText(str(var_tmp[2]))
37 37 self.txtDeviceD.setText(str(var_tmp[3]))
38 38 #Se desactivan los que no existen
39 39 if len(var_tmp[0]) == 0 :
40 40 self.chkDevA.setChecked(False)
41 41 self.chkDevA.setEnabled(False)
42 42 if len(var_tmp[1]) == 0 :
43 43 self.chkDevB.setChecked(False)
44 44 self.chkDevB.setEnabled(False)
45 45 if len(var_tmp[2]) == 0 :
46 46 self.chkDevC.setChecked(False)
47 47 self.chkDevC.setEnabled(False)
48 48 if len(var_tmp[3]) == 0 :
49 49 self.chkDevD.setChecked(False)
50 50 self.chkDevD.setEnabled(False)
51 51
52 52 #----------------------------------- expulsa los dispositivos de grabacion --------------------------------------------
53 53
54 54 def eject_devices(self):
55 55 for var_dev in self.var_devices:
56 56 var_cmd = 'eject ' + var_dev
57 57 commands.getstatusoutput(var_cmd)
58 58
59 59 #----------------------------------- listado de los dispositivos de grabacion seleccionados --------------------------------------------
60 60
61 61 def selected_devices(self):
62 62 self.var_devices=[]
63 63 if self.chkDevA.isChecked():
64 64 self.var_devices.append(str(self.txtDeviceA.text()))
65 65 if self.chkDevB.isChecked():
66 66 self.var_devices.append(str(self.txtDeviceB.text()))
67 67 if self.chkDevC.isChecked():
68 68 self.var_devices.append(str(self.txtDeviceC.text()))
69 69 if self.chkDevD.isChecked():
70 70 self.var_devices.append(str(self.txtDeviceD.text()))
71 71
72 72 if len(self.var_devices) == 0:
73 73 return False
74 74 else:
75 75 return True
76 76
77 77
78 78 #----------------------------------------------------- Inicializacion para pruebas---------------------------------------------------------------
79 79
80 80 def set_parameters_test(self):
81 81 """
82 82 Se usa para inicializar ciertos parametros para pruebas
83 83 """
84 84 self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS')
85 85 self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager')
86 86 self.txtElabel.setText('EW_DRIFTS_pruebas')
87 87 self.lstDcapacity.setCurrentIndex(4)
88 88 self.txtDcapacity.setValue(100.0)
89 89 self.txtDcapacity.setReadOnly(False)
90 90
91 91 def set_devices_test(self):
92 92 self.txtDeviceA.setText("/dev/scd0")
93 93 self.txtDeviceB.setText("/dev/scd1")
94 94 self.txtDeviceC.setText("/dev/scd2")
95 95 self.txtDeviceD.setText("/dev/scd3")
96 96
97 97
98 98
99 99 #----------------------------------------------------- crea parameters.conf ---------------------------------------------------------------
100 100
101 101 def make_parameters_conf(self):
102 102 var_file = open("parameters.conf","w")
103 103 var_file.write(self.var_Dpath+"\n") #0 Ruta de los datos
104 104 var_file.write(self.var_Rpath+"\n") #1 Ruta del proyecto
105 105 var_file.write(str(self.var_lstDtype)+"\n") #2 opcion Data Type
106 106 var_file.write(self.var_Dtype+"\n") #3 extension Data Type
107 107 var_file.write(self.var_Elabel+"\n") #4 etiqueta
108 108 var_file.write(str(self.var_Copys)+"\n") #5 Numero de copias
109 109 var_file.write(str(self.var_lstDcapacity)+"\n") #6 opcion Device Capacity
110 110 var_file.write(str(self.var_Dcapacity)+"\n") #7 tamaΓ±o Device Capacity
111 111 var_file.write(str(self.var_Discs)+"\n") #8 Numero de discos a grabar
112 112 # var_file.write(str(self.lstStartDay.currentIndex())+"\n") #9 Indice fecha inicial
113 113 # var_file.write(str(self.lstStopDay.currentIndex())+"\n") #10 Indice fecha final
114 114 var_file.close()
115 115
116 116 #----------------------------------------------------- carga parameters.conf ---------------------------------------------------------------
117 117
118 118 def get_parameters_conf(self):
119 119 var_file = open("parameters.conf","r")
120 120 lines = var_file.readlines()
121 121 self.txtDpath.setText(lines[0][:-1]) #0
122 122 self.txtRpath.setText(lines[1][:-1]) #1
123 123 self.lstDtype.setCurrentIndex(int(lines[2])) #2
124 124 self.txtDtype.setText(lines[3][:-1]) #3
125 125 self.txtElabel.setText(lines[4][:-1]) #4
126 126 self.txtCopys.setValue(int(lines[5][:-1])) #5
127 127 self.lstDcapacity.setCurrentIndex(int(lines[6])) #6
128 128 self.txtDcapacity.setValue(float(lines[7])) #7
129 129 self.var_Discs = int(lines[8]) #8
130 130 # var_StartDay = int(lines[6]) #9
131 131 # var_StopDay = int(lines[7]) #10
132 132 ################################
133 133 self.var_Copys = self.txtCopys.value() #5
134 134 ################################
135 135
136 136 var_file.close()
137 137
138 138
139 139 #-------------------------- actualiza el valor de las variables con los parametros seleccionados -----------------------------
140 140
141 141 def set_vars(self):
142 142 self.var_Dpath = str(self.txtDpath.text()) #0
143 143 self.var_Rpath = str(self.txtRpath.text()) #1
144 144 self.var_lstDtype = self.lstDtype.currentIndex() #2
145 145 self.var_Dtype = str(self.txtDtype.text()) #3
146 146 self.var_Elabel = str(self.txtElabel.text()) #4
147 147 self.var_Copys = self.txtCopys.value() #5
148 148 self.var_lstDcapacity = self.lstDcapacity.currentIndex() #6
149 149 self.var_Dcapacity = self.txtDcapacity.value() #7
150 150 self.var_Discs = self.var_Discs #8
151 151
152 152
153 153 #-------------------------- crea burning.conf -----------------------------
154 154
155 155 def make_burning_conf(self):
156 156 var_file = open("burning.conf","w")
157 var_n_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n -1 )
157 var_n_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n - 1 )
158 158 var_file.write(str(var_n_burned_discs)+"\n") #0 Numero de discos ya grabados
159 159 var_file.write(str(self.var_disc_n)+"\n") #1 Disco actual para grabar
160 160 var_file.write(str(self.var_copy_n)+"\n") #2 Numero de copia actual para grabar
161 161 var_file.close()
162 162
163 163 #----------------------------------------------------- carga burning.conf ---------------------------------------------------------------
164 164
165 165 def get_burning_conf(self):
166 166 var_file = open("burning.conf","r")
167 167 lines = var_file.readlines()
168 168 self.var_burned_discs = int(lines[0]) #0
169 169 self.var_disc_n = int(lines[1])
170 170 self.var_copy_n = int(lines[2])
171 171 var_file.close()
172 172
173 173 #---------------------------------------------- Habilitacion y deshabilitacion de items -------------------------------------------------------
174 174
175 175 def enabled_items1(var_bool, self):
176 176 self.tabParameters.setEnabled(not(var_bool))
177 177 self.lstDcapacity.setEnabled(not(var_bool))
178 178 self.txtDcapacity.setEnabled(not(var_bool))
179 179 self.actionChange_Parameters.setEnabled(var_bool)
180 180 self.btnGbkp.setEnabled(not(var_bool))
181 181 self.btnRestart.setEnabled(var_bool)
182 182 self.btnStartburn.setEnabled(var_bool)
183 183
184 184
185 185 def enabled_items2(var_bool, self):
186 186 self.btnRestart.setEnabled(not(var_bool))
187 187 self.btnStartburn.setEnabled(not(var_bool))
188 188 self.btnStopburn.setEnabled(var_bool)
189 189 self.chkCheck.setEnabled(not(var_bool))
190 190 self.actionChange_Parameters.setEnabled(False)
191 191
192 192
193 193
194 194
195 195 #---------------------------------------------- Actualiza estado en los labels -------------------------------------------------------
196 196
197 197 def update_message(type, message, self, index=0):
198 198 if index == 0:
199 199 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
200 200 else:
201 201 var_index = index
202 202
203 203 var_message = message
204 204 # var_message = "BURNING"
205 205 # var_message = "COMPLETED"
206 206 # var_message = "ERROR"
207 207 # var_message = "CHECKING"
208 208 # var_message = "CHECKED"
209 209
210 210 if type == 1:
211 211
212 212 if var_index == 0:
213 213 self.txtBstatusA.setText(var_message)
214 214 self.txtBdiscA.setText(str(self.var_disc_n))
215 215 self.txtBcopyA.setText(str(self.var_copy_n))
216 216
217 217 if var_index == 1:
218 218 self.txtBstatusB.setText(var_message)
219 219 self.txtBdiscB.setText(str(self.var_disc_n))
220 220 self.txtBcopyB.setText(str(self.var_copy_n))
221 221
222 222 if var_index == 2:
223 223 self.txtBstatusC.setText(var_message)
224 224 self.txtBdiscC.setText(str(self.var_disc_n))
225 225 self.txtBcopyC.setText(str(self.var_copy_n))
226 226
227 227 if var_index == 3:
228 228 self.txtBstatusD.setText(var_message)
229 229 self.txtBdiscD.setText(str(self.var_disc_n))
230 230 self.txtBcopyD.setText(str(self.var_copy_n))
231 231
232 232 if type == 2:
233 233
234 234 if var_index == 0:
235 235 self.txtCHstatusA.setText(var_message)
236 236
237 237 if var_index == 1:
238 238 self.txtCHstatusB.setText(var_message)
239 239
240 240 if var_index == 2:
241 241 self.txtCHstatusC.setText(var_message)
242 242
243 243 if var_index == 3:
244 244 self.txtCHstatusD.setText(var_message)
245 245
246 246
@@ -1,607 +1,616
1 1 # -*- coding: utf-8 -*-
2 2
3 3 """
4 4 Module implementing MainWindow.
5 5 """
6 6
7 7 from PyQt4.QtGui import QMainWindow
8 8 from PyQt4.QtCore import pyqtSignature
9 9 from PyQt4 import QtCore
10 10 from Ui_MainWindow import Ui_MainWindow
11 11 from Ui_Parameters import Ui_Parameters
12 12 from Ui_About import Ui_About
13 13 from PyQt4 import QtGui
14 14 from subprocess import *
15 15 import sys
16 16 import os
17 17 #import subprocess
18 18 import time
19 19 import commands
20 20 from functions import functions
21 21 from functions import functions2
22 22
23 23 class MainWindow(QMainWindow, Ui_MainWindow):
24 24 """
25 25 Class documentation goes here.
26 26 """
27 27
28 28 def __init__(self, parent = None):
29 29 QMainWindow.__init__(self, parent)
30 30 self.setupUi(self)
31 31 self.setupUi2()
32 32
33 33 def setupUi2(self):
34 34
35 self.var_real = False
36
35 self.var_real_iso = True
36 self.var_real_burn = False
37 self.var_real_check = False
38 self.var_real_eject = False
37 39 # Reconocimiento de los dispositivos de grabacion
38 40 # functions2.detect_devices(self) #busca los dispositivos de grabacion
39 41 ####################################
40 42 functions2.set_devices_test(self) ############
41 43 ####################################
42 44
43 45 #Inicialiazacion de variables
44 46 self.var_Discs = 0 #Numero de discos del proyecto
45 47 self.var_Copys = 0 #Numero de copias
46 48 self.var_disc_n = 0 # disco actual
47 49 self.var_copy_n = 0 # copia actual
48 50 self.var_burned_discs = 0 #numero de discos ya grabados
49 51
50 52 self.bool_first_iso = False
51 53 self.var_step = 0 # numero de paso en el proceso
52 54 self.bool_state_burning = False #si es True se puede grabar
53 55 self.blank_discs = False # Si es true significa que se acaban de ingresar discos en blanco
54 56
55 57 self.var_list=[] # Lista de DOYs
56 58 self.var_sublist=[] # Sub-lista de DOYs seleccionados
57 59 self.var_devices=[] #Lista de dispositivos seleccionados
58 60
59 61 #Revisa si existe el archivo de confirguracion y lo carga
60 62 if os.path.isfile("parameters.conf"):
61 63 functions2.get_parameters_conf(self)
62 64 self.bool_first_iso = True
63 65 self.txtInfo.append("Parameters were loaded from configuration file")
64 66 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
65 67
66 68 else:
67 69 functions2.set_parameters_test(self) #Establece ciertos parametros, para pruebas
68 70
69 71 functions2.set_vars(self) #Carga las variables de la clase con los parametros seleccionados
70 72
71 73 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
72 74 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
73 75 functions.load_days(self)
74 76
75 77 if os.path.isfile("parameters.conf"):
76 78 functions2.enabled_items1(True, self) #Se bloquean los parametros de configuracion
77 79
78 80 if os.path.isfile("burning.conf"):
79 81 functions2.get_burning_conf(self)
80 82 self.txtInfo.append("Current disc: "+str(self.var_disc_n))
81 83 self.txtInfo.append("Current copy: "+str(self.var_copy_n))
82 84 self.txtInfo.append("Burned discs: "+str(self.var_burned_discs))
83 85 self.btnStartburn.setText("Continue")
84
85
86 self.actionChange_Parameters.setEnabled(False)
86 87
87 88 self.connect(self.actionChange_Parameters, QtCore.SIGNAL("triggered()"), self.changeParameters)
88 89 self.connect(self.actionAbout, QtCore.SIGNAL("triggered()"), self.about)
89 90
90 91 self.process_iso = QtCore.QProcess()
91 92 self.connect(self.process_iso, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_iso)
92 93 self.connect(self.process_iso, QtCore.SIGNAL('readyReadStandardError()'), self.readError_iso)
93 94 self.connect(self.process_iso, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_iso)
94 95
95 96 self.process_burn = QtCore.QProcess()
96 97 self.connect(self.process_burn, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_burn)
97 98 self.connect(self.process_burn, QtCore.SIGNAL('readyReadStandardError()'), self.readError_burn)
98 99 self.connect(self.process_burn, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_burn)
99 100
100 101 self.process_check = QtCore.QProcess()
101 102 self.connect(self.process_check, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_check)
102 103 self.connect(self.process_check, QtCore.SIGNAL('readyReadStandardError()'), self.readError_check)
103 104 self.connect(self.process_check, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_check)
104 105
105 106
106 107 def changeParameters(self):
107 108 dlg=QtGui.QDialog()
108 109 dlgui=Ui_Parameters()
109 110 dlgui.setupUi(dlg)
110 111 if (dlg.exec_() == QtGui.QDialog.Accepted):
111 112 if dlgui.txtDisc.value() > self.var_Discs or dlgui.txtCopy.value() > dlgui.txtNcopys.value():
112 113 self.txtInfo.append("Wrong parameters")
113 114 else:
114 115 self.var_Copys = dlgui.txtNcopys.value()
115 116 self.var_disc_n = dlgui.txtDisc.value()
116 117 self.var_copy_n = dlgui.txtCopy.value()
117 118 self.txtInfo.append("Changed parameters")
118 119 self.var_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n -1 )
119 120 self.bool_first_iso = True
121 self.txtInfo.append("Current disc: "+str(self.var_disc_n))
122 self.txtInfo.append("Current copy: "+str(self.var_copy_n))
123 self.txtInfo.append("Nro Copys: "+str(self.var_Copys))
124 functions2.make_parameters_conf(self)
125 self.txtCopys.setValue(self.var_Copys) #Actualizo mananualmente el valor Copys
120 126
121 127
122 128
123 129 def about(self):
124 130 dlg_about=QtGui.QDialog()
125 131 dlgui_about=Ui_About()
126 132 dlgui_about.setupUi(dlg_about)
127 133 dlg_about.exec_()
128 134
129 135
130 136 #==============================================================================
131 137 # Manejo de los eventos
132 138 #==============================================================================
133 139
134 140 #----------------------------------------------------- Obtencion de la ruta de los datos ---------------------------------------------------------------
135 141
136 142 @pyqtSignature("")
137 143 def on_btnDpath_clicked(self):
138 144 """
139 145 Permite seleccionar graficamente el direcorio de los datos a grabar
140 146 """
141 147 self.var_Dpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
142 148 self.txtDpath.setText(self.var_Dpath)
143 149 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
144 150 functions.load_days(self)
145 151
146 152
147 153 @pyqtSignature("")
148 154 def on_txtDpath_editingFinished(self):
149 155 """
150 156 Carga la ruta editada y verifica que sea correcta y carga la lista de dias
151 157 """
152 158 self.var_Dpath=str(self.txtDpath.text()) #Se carga la variable con la ruta recien editada
153 159 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
154 160 functions.load_days(self)
155 161
156 162
157 163 #----------------------------------------------------- Obtencion de las ruta del proyecto ---------------------------------------------------------------
158 164
159 165 @pyqtSignature("")
160 166 def on_btnRpath_clicked(self):
161 167 """
162 168 Permite seleccionar graficamente el direcorio del proyecto
163 169 """
164 170 self.var_Rpath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
165 171 self.txtRpath.setText(self.var_Rpath)
166 172 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
167 173
168 174
169 175 @pyqtSignature("")
170 176 def on_txtRpath_editingFinished(self):
171 177 """
172 178 Valida la ruta del proyecto
173 179 """
174 180 self.var_Rpath = str(self.txtRpath.text()) #Se carga la variable con la ruta recien editada
175 181 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
176 182
177 183
178 184 #----------------------------------------------------- Tipo de datos ---------------------------------------------------------------
179 185
180 186 @pyqtSignature("int")
181 187 def on_lstDtype_activated(self, index):
182 188 """
183 189 Permite elegir entre los tipos de archivos
184 190 """
185 191 self.txtDtype.setReadOnly(True)
186 192 if index == 0:
187 193 self.var_Dtype ='r'
188 194 elif index == 1:
189 195 self.var_Dtype ='pdata'
190 196 elif index == 2:
191 197 self.var_Dtype ='sswma'
192 198 else :
193 199 self.var_Dtype =''
194 200 self.txtDtype.setReadOnly(False)
195 201
196 202 self.txtDtype.setText(self.var_Dtype)
197 203 functions.load_days(self) #llamada a funcion
198 204
199 205 @pyqtSignature("")
200 206 def on_txtDtype_editingFinished(self):
201 207 self.var_Dtype=str(self.txtDtype.text())
202 208 functions.load_days(self) #llamada a funcion
203 209
204 210
205 211 #----------------------------------------------------- Etiqueta ---------------------------------------------------------------
206 212
207 213 @pyqtSignature("")
208 214 def on_txtElabel_editingFinished(self):
209 215 self.var_Elabel = str(self.txtElabel.text())
210 216
211 217 #----------------------------------------------------- Numero de copias ---------------------------------------------------------------
212 218 @pyqtSignature("")
213 219 def on_txtCopys_editingFinished(self):
214 220 self.var_Copys = self.txtCopys.value()
215 221
216 222 #----------------------------------------------------- Seleccion del rango de fechas ---------------------------------------------------------------
217 223
218 224 @pyqtSignature("int") #CLOSED
219 225 def on_lstStartDay_activated(self, index):
220 226 """
221 227 Cambia la lista de opciones en lstStopDay
222 228 """
223 229 var_StopDay_index=self.lstStopDay.count() - self.lstStopDay.currentIndex()
224 230 self.lstStopDay.clear()
225 231
226 232 for i in self.var_list[index:]:
227 233 self.lstStopDay.addItem(i)
228 234
229 235 self.lstStopDay.setCurrentIndex(self.lstStopDay.count() - var_StopDay_index)
230 236
231 237 functions.get_sub_list(self)
232 238
233 239
234 240 @pyqtSignature("int") #CLOSED
235 241 def on_lstStopDay_activated(self, index):
236 242 """
237 243 Cambia la lista de opciones en lstStartDay
238 244 """
239 245 var_StartDay_index=self.lstStartDay.currentIndex()
240 246 var_end_index = self.lstStopDay.count() - index
241 247 self.lstStartDay.clear()
242 248
243 249 for i in self.var_list[:len(self.var_list) - var_end_index + 1]:
244 250 self.lstStartDay.addItem(i)
245 251
246 252 self.lstStartDay.setCurrentIndex(var_StartDay_index)
247 253
248 254 functions.get_sub_list(self)
249 255
250 256
251 257 #----------------------------------------------------- Capacidad del dispositivo de grabacion ---------------------------------------------------------------
252 258
253 259 @pyqtSignature("")
254 260 def on_txtDcapacity_editingFinished(self):
255 261 self.var_Dcapacity = self.txtDcapacity.value()
256 262
257 263
258 264 @pyqtSignature("int") #CLOSED
259 265 def on_lstDcapacity_activated(self, index):
260 266 """
261 267 Permite elegir el tamaΓ±o del disco
262 268 """
263 269 if index == 0:
264 270 var_size=25.0
265 271 elif index == 1:
266 272 var_size=8.5
267 273 elif index == 2:
268 274 var_size=4.7
269 275 elif index == 3:
270 276 var_size=0.7
271 277
272 278 if index != 4:
273 279 self.txtDcapacity.setValue(var_size*10**9/1024**2)
274 280 self.txtDcapacity.setReadOnly(True)
275 281 else:
276 282 self.txtDcapacity.setValue(100.0)
277 283 self.txtDcapacity.setReadOnly(False)
278 284
279 285 self.var_lstDcapacity = self.lstDcapacity.currentIndex()
280 286 self.var_Dcapacity = self.txtDcapacity.value()
281 287
282 288 #----------------------------------------------------- Testeo de las unidades de grabacion ---------------------------------------------------------------
283 289
284 290 @pyqtSignature("")
285 291 def on_btnTdevA_clicked(self):
286 292 var_dev = str(self.txtDeviceA.text())
287 293 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
288 294 commands.getstatusoutput(var_cmd)
289 295
290 296 @pyqtSignature("")
291 297 def on_btnTdevB_clicked(self):
292 298 var_dev = str(self.txtDeviceB.text())
293 299 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
294 300 commands.getstatusoutput(var_cmd)
295 301
296 302 @pyqtSignature("")
297 303 def on_btnTdevC_clicked(self):
298 304 var_dev = str(self.txtDeviceC.text())
299 305 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
300 306 commands.getstatusoutput(var_cmd)
301 307
302 308 @pyqtSignature("")
303 309 def on_btnTdevD_clicked(self):
304 310 var_dev = str(self.txtDeviceD.text())
305 311 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
306 312 commands.getstatusoutput(var_cmd)
307 313
308 314
309 315 #==============================================================================
310 316 # Botones para la generacion de los archivos de configuracion
311 317 #==============================================================================
312 318
313 319 #----------------------------------------------------- Generacion de la configuracion usando los parametros ---------------------------------------------------------------
314 320
315 321 @pyqtSignature("")
316 322 def on_btnGbkp_clicked(self):
317 323 """
318 324 Generacion de archivos de configuracion usando los parametros
319 325 """
320 326
321 327 if functions.validate_parameters(self) == False:
322 328 return
323 329
324 330 #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente
325 331 list_dirs=['gpath','iso','ppath', 'tmpdata']
326 332 bool_make_dirs = functions.make_dirs(list_dirs, self)
327 333 if bool_make_dirs == False:
328 334 return
329 335
330 336 var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar
331 337
332 338 self.var_Discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
333 339
334 340 functions.make_files_print(self) # Se crean los archivos .print
335 341
336 342 functions2.make_parameters_conf(self) # se crea el archivo parameters.conf
337 343
338 344 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
339 345
340 346 #Se bloquean los parametros de configuracion
341 347 functions2.enabled_items1(True, self)
342 348 self.var_disc_n = 1
343 349 self.var_copy_n = 1
344 350 self.bool_first_iso = True
345 351 self.var_burned_discs = 0 #numero de discos grabados
346 352
347 353
348 354 #----------------------------------------------------- Permite reiniciar la configuracion ---------------------------------------------------------------
349 355
350 356 @pyqtSignature("")
351 357 def on_btnRestart_clicked(self):
352 358 """
353 359 Permite que se puedan cambiar los parametros
354 360 """
355 361 if os.path.isfile("parameters.conf"):
356 362 os.remove("parameters.conf")
357 363 if os.path.isfile("burning.conf"):
358 364 os.remove("burning.conf")
359 365
360 366 functions2.enabled_items1(False, self)
361 367 self.btnStartburn.setText("Start Burn")
362 368
363 369
364 370
365 371 #==============================================================================
366 372 # Acciones de los procesos
367 373 #==============================================================================
368 374
369 375 #------------------------------------------------ Funciones del proceso de creacion del iso ------------------------------------------------------
370 376
371 377 def readOuput_iso(self):
372 378 self.txtProgress.setText("stdout iso: " + QtCore.QString(self.process_iso.readAllStandardOutput()))
373 379
374 380 def readError_iso(self):
375 381 self.txtProgress.setText("stderr iso: " + QtCore.QString(self.process_iso.readAllStandardError()))
376 382
377 383 def finished_iso(self):
378 384 self.txtProgress.clear()
379 385
380 386 if not(self.bool_state_burning):
381 387 return
382 388
383 389 if self.process_iso.exitCode() == 0:
384 self.txtInfo.append("------Iso file: "+functions.i2s(self.var_disc_n)+" created successfully")
390 self.txtInfo.append("------Iso file: "+functions.i2s(self.var_disc_n)+" created successfully\n")
385 391 self.var_step = 1
386 392 self.function_burn()
387 393
388 394 else:
389 395 self.txtInfo.append("#####Error creating iso file "+function.i2s(self.var_disc_n)
390 396 +" , code "+QtCore.QString(self.process_iso.exitCode()))
391 397 self.txtInfo.append("Please check the data")
392 398 self.txtInfo.append("FATAL ERROR")
399
393 400 #----------------------------------------------------- Funciones del proceso de grabado ---------------------------------------------------------------
394 401
395 402 def readOuput_burn(self):
396 403 self.txtProgress.setText("stdout burn: " + QtCore.QString(self.process_burn.readAllStandardOutput()))
397 404
398 405 def readError_burn(self):
399 406 self.txtProgress.setText("stderr burn: " + QtCore.QString(self.process_burn.readAllStandardError()))
400 407
401 408 def finished_burn(self):
402 409 self.txtProgress.clear()
403 410
404 411 #Si se paro el proceso manualmente se termina
405 412 if not(self.bool_state_burning):
406 413 return
407 414
408 functions2.make_burning_conf(self) # Si el proceso no ha sido detenido manualmente
409 #crea el archivo burning.conf para el seguimiento de los discos grabados
410
411 415 if self.process_burn.exitCode() == 0:
412 416 self.txtInfo.append("-----Complete recording, disc: "+str(self.var_disc_n)+" copy: "+str(self.var_copy_n))
413 417 functions2.update_message(1, "COMPLETED", self)
414 418 self.var_step = 2
415 419 self.function_check()
416 420
417 421 else:
418 422 self.txtInfo.append("#######Error recording, disc: "+function.i2s(self.var_disc_n)+" copy: "
419 423 +function.i2s(self.var_copy_n)+", code "+QtCore.QString(self.process_burn.exitCode()))
420 424 functions2.update_message(1, "ERROR", self)
421 425
422 426 functions.is_last_disc_and_copy(self)
423 427
424 428
425 429 #----------------------------------------------------- Funciones del proceso de verificacion ---------------------------------------------------------------
426 430
427 431 def readOuput_check(self):
428 432 self.txtProgress.setText("stdout check: " + QtCore.QString(self.process_check.readAllStandardOutput()))
429 433
430 434 def readError_check(self):
431 435 self.txtProgress.setText("stderr check: " + QtCore.QString(self.process_check.readAllStandardError()))
432 436
433 437 def finished_check(self):
434 438 self.txtProgress.clear()
435 439
436 440 if not(self.bool_state_burning):
437 441 return
438 442
439 443 if self.process_check.exitCode() == 0:
440 444 self.txtInfo.append("--------Complete checking, disc: "+str(self.var_disc_n)+" copy: "+str(self.var_copy_n))
441 445 functions2.update_message(2, "CHECKED", self)
442 446
443 447 else:
444 448 self.txtInfo.append("#######Error checking, disc: "+function.i2s(self.var_disc_n)+" copy: "
445 449 +function.i2s(self.var_copy_n)+", code "+QtCore.QString(self.process_check.exitCode()))
446 450 functions2.update_message(2, "ERROR", self)
447 451
448 452 functions.is_last_disc_and_copy(self)
449 453
450 454
451 455
452 456 #==============================================================================
453 457 # Botones para el proceso de grabacion
454 458 #==============================================================================
455 459
456 460 #----------------------------------------------------- Iniciar proceso de grabacion ---------------------------------------------------------------
457 461
458 462 @pyqtSignature("")
459 463 def on_btnStartburn_clicked(self):
460 464 """
461 465 Se inicia el proceso de grabacion
462 466 """
463 467 #Verifica que exista algun dispositivo de grabacion seleccionado
464 468 if not(functions2.selected_devices(self)):
465 469 self.txtInfo.append("There is no recording device selected")
466 470 return
467 471
468 472 # #Lista los dispositivos de grabacion a usar
469 473 # for dev in self.var_devices:
470 474 # self.txtInfo.append("recording device :"+dev)
471 475
472 476 self.bool_state_burning = True
473 477 functions2.enabled_items2(True, self)
474 478
475 479 if self.bool_first_iso == True:
476 480 self.txtInfo.append("BUTTON: on_btnStartburn_clicked")
477 481 self.var_step = 4
478 482 self.function_eject()
479 483 return
480 484
481 485 if self.var_step == 0:
482 486 self.function_iso()
483 487 return
484 488
485 489 if self.var_step == 1:
486 490 self.function_burn()
487 491 return
488 492
489 493 #----------------------------------------------------- Funcion para el grabado ---------------------------------------------------------------
490 494
491 495 def function_iso(self):
492 496 #Creacion del archivo.iso para la grabacion
493 497 if self.var_step == 0:
494 498 self.txtInfo.append("########## Disc number: "+str(self.var_disc_n)+"##########")
495 499 self.txtInfo.append("------Creating iso file number: "+str(self.var_disc_n))
496 500
497 if self.var_real == True:
501 if self.var_real_iso == True:
498 502 var_cmd = functions.cmd_iso(self)
499 503 else:
500 504 self.txtInfo.append('**function_iso')
501 505 var_cmd="echo 'function_iso'"
502 506
503 507 self.process_iso.start(var_cmd)
504 508
505 509 def function_burn(self):
506 510 #Grabacion de los DVDs
511
507 512 if self.var_step == 1:
508 self.txtInfo.append("------Recording disc: "+str(self.var_copy_n)+", copy:"+str(self.var_copy_n))
513 self.txtInfo.append("------Recording disc: "+str(self.var_disc_n)+", copy:"+str(self.var_copy_n))
509 514 functions2.update_message(1, "BURNING", self)
510 515
511 if self.var_real == True:
516 if self.var_real_burn == True:
512 517 var_cmd = functions.cmd_burn(self)
518 #########################################
519 return######################################
520 ########################################
521
513 522 else:
514 523 self.txtInfo.append('**function_burn')
515 524 var_cmd="echo 'function_burn'"
516 525
517 526 self.process_burn.start(var_cmd)
518 527
519 528 def function_check(self):
520 529 #Verificacion de los discos
521 530 if self.var_step == 2:
522 self.txtInfo.append("-----------checking disc:"+str(self.var_copy_n)+", copy:"+str(self.var_copy_n))
531 self.txtInfo.append("-----------checking disc:"+str(self.var_disc_n)+", copy:"+str(self.var_copy_n))
523 532 functions2.update_message(2, "CHECKING", self)
524 533
525 if self.var_real == True:
534 if self.var_real_check == True:
526 535 var_cmd = functions.cmd_check(self)
527 536 else:
528 537 self.txtInfo.append('**function_check')
529 538 var_cmd="echo 'function_check'"
530 539
531 540 self.process_check.start(var_cmd)
532 541
533 542 #OK
534 543 def function_eject(self):
535 544 self.txtInfo.append("Ejecting recording devices")
536 545 self.txtInfo.append("Please insert blank discs")
537 546
538 if self.var_real == True:
547 if self.var_real_eject == True:
539 548 functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
540 549 else:
541 550 self.txtInfo.append("**functions2.eject_devices")
542 551
543 552 self.btnStartburn.setText("Continue")
544 553 self.btnStartburn.setEnabled(True)
545 554
546 555 if self.bool_first_iso == True:
547 556 self.bool_first_iso = False
548 557 self.var_step = 0
549 558
550 559 elif self.var_copy_n == 1:
551 560 self.var_step = 0
552 561
553 562 else:
554 563 self.var_step = 1
555 564
556 565 def function_final(self):
557 566 self.txtInfo.append("Recording process is complete")
558 567
559 568
560 569
561 570 #----------------------------------------------------- Detener proceso de grabacion ---------------------------------------------------------------
562 571
563 572 @pyqtSignature("")
564 573 def on_btnStopburn_clicked(self):
565 574 """
566 575 Slot documentation goes here.
567 576 """
568 577 self.bool_state_burning = False
569 578
570 579 if self.var_step == 0:
571 580 self.process_iso.terminate() #Termina el proceso, si puede
572 581 # self.process_iso.kill() #Mata el proceso, no es la forma adecuada, solo usar si terminate() no funciona
573 582 elif self.var_step == 1:
574 583 self.process_burn.terminate()
575 584 elif self.var_step == 2:
576 585 self.process_check.terminate()
577 586
578 587 self.txtInfo.append("Stopped recording")
579 588 functions2.enabled_items2(False, self)
580 589 self.bool_first_iso = True
581 590
582 591
583 592
584 593 #==============================================================================
585 594 # Proceso verificacion manual
586 595 #==============================================================================
587 596
588 597
589 598 #----------------------------------------------------- Proceso de verificaion manual ---------------------------------------------------------------
590 599
591 600
592 601 @pyqtSignature("")
593 602 def on_btnTDpath_clicked(self):
594 603 """
595 604 Slot documentation goes here.
596 605 """
597 606 self.var_TDpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
598 607 self.txtTDpath.setText(self.var_TDpath)
599 608 self.statusTDpath = functions.dir_exists(self.var_TDpath, self)
600 609
601 610
602 611 @pyqtSignature("")
603 612 def on_btnCHstart_clicked(self):
604 613 """
605 614 Slot documentation goes here.
606 615 """
607 616 pass
General Comments 0
You need to be logged in to leave comments. Login now