##// END OF EJS Templates
continuar grabacion ok...
ralonso -
r72:73
parent child
Show More
@@ -1,259 +1,269
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 #class BKmanager:
3 #class BKmanager:
4 # def __init__(self):
4 # def __init__(self):
5
5
6 from subprocess import *
6 from subprocess import *
7 import sys
7 import sys
8 import os
8 import os
9 import subprocess
9 import subprocess
10 import commands
10 import commands
11 import shutil
11 import shutil
12
12
13 #--------------------------------------------- Entero a cadena agregando ceros delante -------------------------------------------------
13 #--------------------------------------------- Entero a cadena agregando ceros delante -------------------------------------------------
14
14
15 def i2s(var_n, var_length=4):
15 def i2s(var_n, var_length=4):
16 var_n2=str(var_n)
16 var_n2=str(var_n)
17 while len(var_n2) < var_length:
17 while len(var_n2) < var_length:
18 var_n2 = "0"+var_n2
18 var_n2 = "0"+var_n2
19 return var_n2
19 return var_n2
20
20
21
21
22 #----------------------------------------- Se verifica que la ruta exista y sea un directorio -------------------------------------------------
22 #----------------------------------------- Se verifica que la ruta exista y sea un directorio -------------------------------------------------
23
23
24 def dir_exists(var_dir, self):
24 def dir_exists(var_dir, self):
25 if os.path.isdir(var_dir):
25 if os.path.isdir(var_dir):
26 return True
26 return True
27 else:
27 else:
28 self.txtInfo.append("Incorrect path:" + str(var_dir))
28 self.txtInfo.append("Incorrect path:" + str(var_dir))
29 return False
29 return False
30
30
31
31
32 #-------------------------------- Se buscan los archivos del tipo especificado y se cargan las fechas -----------------------------
32 #-------------------------------- Se buscan los archivos del tipo especificado y se cargan las fechas -----------------------------
33
33
34 def load_days(self):
34 def load_days(self):
35
35
36 self.var_list=[]
36 self.var_list=[]
37 self.lstStartDay.clear()
37 self.lstStartDay.clear()
38 self.lstStopDay.clear()
38 self.lstStopDay.clear()
39
39
40 if self.statusDpath == False:
40 if self.statusDpath == False:
41 self.btnGbkp.setEnabled(False)
41 self.btnGbkp.setEnabled(False)
42 return
42 return
43
43
44 if self.var_Dtype == '':
44 if self.var_Dtype == '':
45 return
45 return
46
46
47 var_cmd="find " + str(self.var_Dpath) + " -name *."+ str(self.var_Dtype) +" | awk -F/ '{print substr($NF,2,7)}' | sort| uniq"
47 var_cmd="find " + str(self.var_Dpath) + " -name *."+ str(self.var_Dtype) +" | awk -F/ '{print substr($NF,2,7)}' | sort| uniq"
48 output=commands.getstatusoutput(var_cmd)[1]
48 output=commands.getstatusoutput(var_cmd)[1]
49
49
50 #Si no se encuentra ningun archivo
50 #Si no se encuentra ningun archivo
51 if len(output) == 0:
51 if len(output) == 0:
52 self.txtInfo.append("File not found")
52 self.txtInfo.append("File not found")
53 self.btnGbkp.setEnabled(False)
53 self.btnGbkp.setEnabled(False)
54 return
54 return
55
55
56 #Se cargan las listas para seleccionar StartDay y StopDay (QComboBox)
56 #Se cargan las listas para seleccionar StartDay y StopDay (QComboBox)
57 for i in range(0, (len(output)+1)/8):
57 for i in range(0, (len(output)+1)/8):
58 self.var_list.append(output[8*i:8*(i+1)-1])
58 self.var_list.append(output[8*i:8*(i+1)-1])
59
59
60 for i in self.var_list:
60 for i in self.var_list:
61 self.lstStartDay.addItem(i)
61 self.lstStartDay.addItem(i)
62 self.lstStopDay.addItem(i)
62 self.lstStopDay.addItem(i)
63 self.lstStopDay.setCurrentIndex(self.lstStartDay.count()-1)
63 self.lstStopDay.setCurrentIndex(self.lstStartDay.count()-1)
64
64
65 get_sub_list(self)
65 get_sub_list(self)
66 self.btnGbkp.setEnabled(True)
66 self.btnGbkp.setEnabled(True)
67
67
68
68
69 #-------------------------------------------------- Obtiene el rango de las fechas seleccionadas -----------------------------------------
69 #-------------------------------------------------- Obtiene el rango de las fechas seleccionadas -----------------------------------------
70
70
71 def get_sub_list(self):
71 def get_sub_list(self):
72 self.var_sublist=[]
72 self.var_sublist=[]
73 for i in self.var_list[self.lstStartDay.currentIndex():self.lstStartDay.currentIndex() + self.lstStopDay.currentIndex()+1]:
73 for i in self.var_list[self.lstStartDay.currentIndex():self.lstStartDay.currentIndex() + self.lstStopDay.currentIndex()+1]:
74 self.var_sublist.append(i)
74 self.var_sublist.append(i)
75
75
76
76
77 #----------------------------------------------------- Verifica los parametros faltantes -----------------------------------------------------------
77 #----------------------------------------------------- Verifica los parametros faltantes -----------------------------------------------------------
78
78
79 def validate_parameters(self):
79 def validate_parameters(self):
80 #Verifica que las ruta del proyecto sea valida
80 #Verifica que las ruta del proyecto sea valida
81 if self.statusRpath == False:
81 if self.statusRpath == False:
82 self.txtInfo.append("Incorrect proyect path")
82 self.txtInfo.append("Incorrect proyect path")
83 return False
83 return False
84
84
85 #Verifica la etiqueta
85 #Verifica la etiqueta
86 if len(self.var_Elabel) == 0:
86 if len(self.var_Elabel) == 0:
87 self.txtInfo.append("Enter label")
87 self.txtInfo.append("Enter label")
88 return False
88 return False
89
89
90 return True
90 return True
91
91
92
92
93 #------------------------------------------------- Crea directorios en la ruta indicada -----------------------------------------------------------
93 #------------------------------------------------- Crea directorios en la ruta indicada -----------------------------------------------------------
94
94
95 def make_dirs(list_dirs, self):
95 def make_dirs(list_dirs, self):
96 """
96 """
97
97
98 """
98 """
99
99
100 for var_dir in list_dirs:
100 for var_dir in list_dirs:
101 shutil.rmtree(self.var_Rpath+'/'+var_dir, True)
101 shutil.rmtree(self.var_Rpath+'/'+var_dir, True)
102 var_output=commands.getstatusoutput("mkdir -p "+self.var_Rpath+'/'+var_dir)[0]
102 var_output=commands.getstatusoutput("mkdir -p "+self.var_Rpath+'/'+var_dir)[0]
103 if var_output != 0:
103 if var_output != 0:
104 self.txtInfo.append("Error creating directory: "+var_dir+", output_error:" + str(var_output))
104 self.txtInfo.append("Error creating directory: "+var_dir+", output_error:" + str(var_output))
105 return False
105 return False
106 self.txtInfo.append('Directories created correctly')
106 self.txtInfo.append('Directories created correctly')
107 return True
107 return True
108
108
109
109
110 #-------------------------------------------- Busca los archivos con los parametros de busqueda ---------------------------------------
110 #-------------------------------------------- Busca los archivos con los parametros de busqueda ---------------------------------------
111
111
112 def list_files(self):
112 def list_files(self):
113 var_files_list=[]
113 var_files_list=[]
114 for var_doy in self.var_sublist:
114 for var_doy in self.var_sublist:
115 var_cmd="find " + str(self.var_Dpath) + " -name ?"+var_doy+"???."+ str(self.var_Dtype) + " |sort"
115 var_cmd="find " + str(self.var_Dpath) + " -name ?"+var_doy+"???."+ str(self.var_Dtype) + " |sort"
116 var_output=commands.getstatusoutput(var_cmd)[1]
116 var_output=commands.getstatusoutput(var_cmd)[1]
117 for var_file in var_output.split():
117 for var_file in var_output.split():
118 var_files_list.append(var_file) #Almacena cada archivo en la lista
118 var_files_list.append(var_file) #Almacena cada archivo en la lista
119 return var_files_list
119 return var_files_list
120
120
121
121
122 #--------------- 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
123
124 def make_files_dat(var_files_list, self):
124 def make_files_dat(var_files_list, self):
125 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
125 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
126 var_n=1 #Numero del DVD actual
126 var_n=1 #Numero del DVD actual
127 var_tmp=0 #Se usa para acumular el tamaΓ±o de los archivos de la lista
127 var_tmp=0 #Se usa para acumular el tamaΓ±o de los archivos de la lista
128 var_files_list_2=[] #Se usa para almacenar la lista de archivos agrbar en cada DVD
128 var_files_list_2=[] #Se usa para almacenar la lista de archivos agrbar en cada DVD
129
129
130 for i in var_files_list: #Se asignan en i los archivos de la lista
130 for i in var_files_list: #Se asignan en i los archivos de la lista
131
131
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
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
133 var_tmp += var_size_i #Se acumulan el tamaΓ±o de los archivos de la lista
133 var_tmp += var_size_i #Se acumulan el tamaΓ±o de los archivos de la lista
134
134
135 #Si el tamaΓ±o acumulado es mayor que el de el DVD
135 #Si el tamaΓ±o acumulado es mayor que el de el DVD
136 if var_tmp > (self.var_Dcapacity * 1024):
136 if var_tmp > (self.var_Dcapacity * 1024):
137 var_tmp -= var_size_i #se quita el tamaΓ±o sumado para mostrar el tamaΓ±o real
137 var_tmp -= var_size_i #se quita el tamaΓ±o sumado para mostrar el tamaΓ±o real
138 #se crea un archivo con numeral en el sufijo y extension .dat
138 #se crea un archivo con numeral en el sufijo y extension .dat
139 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
139 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
140 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
140 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
141 for line in var_files_list_2:
141 for line in var_files_list_2:
142 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
142 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
143 var_file.write(var_tmp_path+'='+line+'\n')
143 var_file.write(var_tmp_path+'='+line+'\n')
144 var_file.close()
144 var_file.close()
145
145
146 var_tmp = var_size_i #Se asigna a la variable el tamaΓ±o del archivo actual
146 var_tmp = var_size_i #Se asigna a la variable el tamaΓ±o del archivo actual
147 var_files_list_2=[] #Se reinicia la lista
147 var_files_list_2=[] #Se reinicia la lista
148 var_n += 1
148 var_n += 1
149 var_files_list_2.append(i)
149 var_files_list_2.append(i)
150
150
151 #se crea un archivo con numeral en el sufijo y extension .dat
151 #se crea un archivo con numeral en el sufijo y extension .dat
152 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
152 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","w")
153 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
153 #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat
154 for line in var_files_list_2:
154 for line in var_files_list_2:
155 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
155 var_tmp_path=line.split(self.var_Dpath)[1][:-13]
156 var_file.write(var_tmp_path+'='+line+'\n')
156 var_file.write(var_tmp_path+'='+line+'\n')
157 var_file.close()
157 var_file.close()
158
158
159 self.txtInfo.append("configuration files created")
159 self.txtInfo.append("configuration files created")
160 return var_n
160 return var_n
161
161
162
162
163 #------------------------------ Genera los archivos .print con los cuales se creara los postscript -----------------------------------
163 #------------------------------ Genera los archivos .print con los cuales se creara los postscript -----------------------------------
164
164
165 def make_files_print(self):
165 def make_files_print(self):
166
166
167 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
167 var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar
168 var_Rpath_gpath=self.var_Rpath+"/gpath" #Ruta de los archivos postscript
168 var_Rpath_gpath=self.var_Rpath+"/gpath" #Ruta de los archivos postscript
169 var_labels=[]
169 var_labels=[]
170 for m in range (0, self.txtPSgraphic.value() - 1):
170 for m in range (0, self.txtPSgraphic.value() - 1):
171 var_lines = "\n" * 9
171 var_lines = "\n" * 9
172 var_labels.append(var_lines)
172 var_labels.append(var_lines)
173
173
174 # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .print
174 # Se leen todos los archivos .dat creados para crear las etiquetas en los archivos .print
175 for var_n in range(1, self.var_Discs + 1):
175 for var_n in range(1, self.var_Discs + 1):
176
176
177 #se abren los archivos .dat en modo lectura
177 #se abren los archivos .dat en modo lectura
178 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","r")
178 var_file = open(var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(var_n)+".dat","r")
179 lines=var_file.readlines() # Se lee las lineas en el archivo y se almacenan en la lista
179 lines=var_file.readlines() # Se lee las lineas en el archivo y se almacenan en la lista
180 var_file.close()
180 var_file.close()
181 list_files=[]
181 list_files=[]
182 var_lines=[]
182 var_lines=[]
183
183
184 for j in range(0, len(lines)):
184 for j in range(0, len(lines)):
185
185
186 if j == 0:
186 if j == 0:
187 var_first_folder = lines[j].split('=')[0]
187 var_first_folder = lines[j].split('=')[0]
188 var_first_file = (lines[j].split('=')[1])[:-1]
188 var_first_file = (lines[j].split('=')[1])[:-1]
189 continue
189 continue
190
190
191 var_tmp_folder = lines[j].split('=')[0]
191 var_tmp_folder = lines[j].split('=')[0]
192 var_tmp_file = (lines[j].split('=')[1])[:-1]
192 var_tmp_file = (lines[j].split('=')[1])[:-1]
193
193
194 # Si el subfolder superior o el DOY del archivo actual y el anterior son diferentes
194 # Si el subfolder superior o el DOY del archivo actual y el anterior son diferentes
195 if (var_tmp_folder != var_first_folder) or (var_tmp_file[0:-5] != var_first_file[0:-5]):
195 if (var_tmp_folder != var_first_folder) or (var_tmp_file[0:-5] != var_first_file[0:-5]):
196 var_last_file = (lines[j-1].split('=')[1])[:-1]
196 var_last_file = (lines[j-1].split('=')[1])[:-1]
197 list_files.append([var_first_folder, var_first_file, var_last_file])
197 list_files.append([var_first_folder, var_first_file, var_last_file])
198
198
199 var_first_folder = lines[j].split('=')[0]
199 var_first_folder = lines[j].split('=')[0]
200 var_first_file = (lines[j].split('=')[1])[:-1]
200 var_first_file = (lines[j].split('=')[1])[:-1]
201
201
202 var_last_file = (lines[-1].split('=')[1])[:-1]
202 var_last_file = (lines[-1].split('=')[1])[:-1]
203 list_files.append([var_first_folder, var_first_file, var_last_file])
203 list_files.append([var_first_folder, var_first_file, var_last_file])
204
204
205 var_lines2 = lines_print(list_files, self.var_Elabel)
205 var_lines2 = lines_print(list_files, self.var_Elabel)
206
206
207 for k in range(0, len(var_lines2) / 5):
207 for k in range(0, len(var_lines2) / 5):
208 var_lines=["\n"]
208 var_lines=["\n"]
209 var_lines.append(" "+self.var_Elabel+" "+i2s(var_n)+"/"+i2s(self.var_Discs)+"\n")
209 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")
210 var_lines.append("Year Doy Folder"+" "*6+"Set"+" "*9+"Time range\n")
211 var_lines.extend(var_lines2[(5*k):(5*(k+1))])
211 var_lines.extend(var_lines2[(5*k):(5*(k+1))])
212 var_lines.append("\n")
212 var_lines.append("\n")
213 var_labels.append(var_lines)
213 var_labels.append(var_lines)
214
214
215 for i in range(0, (len(var_labels) // 33) +1 ):
215 for i in range(0, (len(var_labels) // 33) +1 ):
216 var_file=var_Rpath_gpath+"/"+self.var_Elabel+"_"+i2s(i+1)
216 var_file=var_Rpath_gpath+"/"+self.var_Elabel+"_"+i2s(i+1)
217 file_ps = open(var_file+".print","w")
217 file_ps = open(var_file+".print","w")
218 if i == (len(var_labels) // 33):
218 if i == (len(var_labels) // 33):
219 var_sub_labels = var_labels[33*i:]
219 var_sub_labels = var_labels[33*i:]
220 else:
220 else:
221 var_sub_labels = var_labels[33*i:33*(i+1)]
221 var_sub_labels = var_labels[33*i:33*(i+1)]
222
222
223 for label in var_sub_labels:
223 for label in var_sub_labels:
224 for line in label:
224 for line in label:
225 file_ps.write(line)
225 file_ps.write(line)
226 file_ps.close()
226 file_ps.close()
227 var_cmd="enscript "+var_file+".print -p "+var_file+".ps -f Times-Roman7 " \
227 var_cmd="enscript "+var_file+".print -p "+var_file+".ps -f Times-Roman7 " \
228 +" -3R -j -B --margins=21.25:20.4:25.51:20 --media=A4"
228 +" -3R -j -B --margins=21.25:20.4:25.51:20 --media=A4"
229 var_output=commands.getstatusoutput(var_cmd)[0]
229 var_output=commands.getstatusoutput(var_cmd)[0]
230
230
231
231
232 def lines_print(list_files, var_Elabel):
232 def lines_print(list_files, var_Elabel):
233 """
233 """
234 Devuelve las lineas del rango de archivos de cada etiqueta segun el formato
234 Devuelve las lineas del rango de archivos de cada etiqueta segun el formato
235 """
235 """
236 var_lines=[]
236 var_lines=[]
237 for i in list_files:
237 for i in list_files:
238
238
239 # Si el archivo se grabara directamente en la / del DVD y no en un /directorio/
239 # Si el archivo se grabara directamente en la / del DVD y no en un /directorio/
240 # se usa la etiqueta para indicar la parte de la etiqueta donde va el subdirectorio
240 # se usa la etiqueta para indicar la parte de la etiqueta donde va el subdirectorio
241 if i[0] == '/':
241 if i[0] == '/':
242 var_folder = var_Elabel
242 var_folder = var_Elabel
243 else:
243 else:
244 var_folder = i[0].split('/')[-2]
244 var_folder = i[0].split('/')[-2]
245
245
246 var_first_file = i[1]
246 var_first_file = i[1]
247 var_last_file = i[2]
247 var_last_file = i[2]
248
248
249 var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1]
249 var_date_first_file=commands.getstatusoutput("date -r "+var_first_file+" +'%T'")[1]
250 var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1]
250 var_date_last_file=commands.getstatusoutput("date -r "+var_last_file+" +'%T'")[1]
251
251
252 var_lines.append(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" "
252 var_lines.append(var_first_file[-12:-8]+" "+var_first_file[-8:-5]+" "+var_folder +" "+var_first_file[-5:-2]+" "
253 +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n")
253 +var_last_file[-5:-2]+" "+var_date_first_file+" "+var_date_last_file+"\n")
254 #Nos aseguramos que sea un mutiplo de 5
254 #Nos aseguramos que sea un mutiplo de 5
255 while (len(var_lines) % 5) != 0:
255 while (len(var_lines) % 5) != 0:
256 var_lines.append("\n")
256 var_lines.append("\n")
257
257
258 return var_lines
258 return var_lines
259
259
260 def cmd_iso(self):
261 var_Rpath_ppath=self.var_Rpath+"/ppath"
262 var_Rpath_iso=self.var_Rpath+"/iso"
263 #comando para la creacion del archivo.iso
264 file_dat=var_Rpath_ppath+"/"+self.var_Elabel+"_"+i2s(self.var_disc_n)+".dat"
265 file_iso=var_Rpath_iso+"/"+i2s(self.var_disc_n)+".iso"
266 var_cmd = 'genisoimage -hide-joliet-trans-tbl -joliet-long -r '
267 var_cmd += ' -A '+self.var_Elabel+' -V '+self.var_Elabel
268 var_cmd += ' -graft-points -path-list '+ file_dat+' -o '+file_iso
269 return var_cmd
@@ -1,165 +1,192
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3
3
4 from subprocess import *
4 from subprocess import *
5 import sys
5 import sys
6 import os
6 import os
7 import subprocess
7 import subprocess
8 import commands
8 import commands
9
9
10 #----------------------------------------------------- Deteccion de los dispositivos de grabacion ---------------------------------------------------------------
10 #----------------------------------------------------- Deteccion de los dispositivos de grabacion ---------------------------------------------------------------
11
11
12 def detect_devices(self):
12 def detect_devices(self):
13 """
13 """
14 Deteccion de los dispositvos de grabacion
14 Deteccion de los dispositvos de grabacion
15 """
15 """
16 #var_cmd="wodim --devices | grep /dev/ | awk -F\' '{print $2}'" #Funciona en consola pero no en python ΒΏ?
16 #var_cmd="wodim --devices | grep /dev/ | awk -F\' '{print $2}'" #Funciona en consola pero no en python ΒΏ?
17 var_cmd="wodim --devices | grep /dev/ | awk '{print $2}' | awk -F= '{print $2}'"
17 var_cmd="wodim --devices | grep /dev/ | awk '{print $2}' | awk -F= '{print $2}'"
18
18
19 var_output = commands.getstatusoutput(var_cmd)
19 var_output = commands.getstatusoutput(var_cmd)
20 if var_output[0] != 0:
20 if var_output[0] != 0:
21 self.txtInfo.append("No recording devices")
21 self.txtInfo.append("No recording devices")
22 else:
22 else:
23 # self.txtInfo.append("dispositivos encontrados")
23 # self.txtInfo.append("dispositivos encontrados")
24 var_devices = var_output[1].split('\n')
24 var_devices = var_output[1].split('\n')
25
25
26 var_tmp=[]
26 var_tmp=[]
27 for i in range(0, 4):
27 for i in range(0, 4):
28 if i < len(var_devices):
28 if i < len(var_devices):
29 var_len = len(var_devices[i])
29 var_len = len(var_devices[i])
30 var_tmp.append(var_devices[i][1:var_len - 1])
30 var_tmp.append(var_devices[i][1:var_len - 1])
31 else:
31 else:
32 var_tmp.append('')
32 var_tmp.append('')
33
33
34 #Se escriben los dispostivos correspodientes, si existen
34 #Se escriben los dispostivos correspodientes, si existen
35 self.txtDeviceA.setText(str(var_tmp[0]))
35 self.txtDeviceA.setText(str(var_tmp[0]))
36 self.txtDeviceB.setText(str(var_tmp[1]))
36 self.txtDeviceB.setText(str(var_tmp[1]))
37 self.txtDeviceC.setText(str(var_tmp[2]))
37 self.txtDeviceC.setText(str(var_tmp[2]))
38 self.txtDeviceD.setText(str(var_tmp[3]))
38 self.txtDeviceD.setText(str(var_tmp[3]))
39 #Se desactivan los que no existen
39 #Se desactivan los que no existen
40 if len(var_tmp[0]) == 0 :
40 if len(var_tmp[0]) == 0 :
41 self.chkDevA.setChecked(False)
41 self.chkDevA.setChecked(False)
42 self.chkDevA.setEnabled(False)
42 self.chkDevA.setEnabled(False)
43 if len(var_tmp[1]) == 0 :
43 if len(var_tmp[1]) == 0 :
44 self.chkDevB.setChecked(False)
44 self.chkDevB.setChecked(False)
45 self.chkDevB.setEnabled(False)
45 self.chkDevB.setEnabled(False)
46 if len(var_tmp[2]) == 0 :
46 if len(var_tmp[2]) == 0 :
47 self.chkDevC.setChecked(False)
47 self.chkDevC.setChecked(False)
48 self.chkDevC.setEnabled(False)
48 self.chkDevC.setEnabled(False)
49 if len(var_tmp[3]) == 0 :
49 if len(var_tmp[3]) == 0 :
50 self.chkDevD.setChecked(False)
50 self.chkDevD.setChecked(False)
51 self.chkDevD.setEnabled(False)
51 self.chkDevD.setEnabled(False)
52
52
53 #----------------------------------- expulsa los dispositivos de grabacion --------------------------------------------
53 #----------------------------------- expulsa los dispositivos de grabacion --------------------------------------------
54
54
55 def eject_devices(self):
55 def eject_devices(self):
56 self.txtInfo.append("Ejecting recording devices")
57 return
56 for var_dev in self.var_devices:
58 for var_dev in self.var_devices:
57 var_cmd = 'eject ' + var_dev
59 var_cmd = 'eject ' + var_dev
58 commands.getstatusoutput(var_cmd)
60 commands.getstatusoutput(var_cmd)
59
61
60 #----------------------------------- listado de los dispositivos de grabacion seleccionados --------------------------------------------
62 #----------------------------------- listado de los dispositivos de grabacion seleccionados --------------------------------------------
61
63
62 def selected_devices(self):
64 def selected_devices(self):
63 self.var_devices=[]
65 self.var_devices=[]
64 if self.chkDevA.isChecked():
66 if self.chkDevA.isChecked():
65 self.var_devices.append(str(self.txtDeviceA.text()))
67 self.var_devices.append(str(self.txtDeviceA.text()))
66 if self.chkDevB.isChecked():
68 if self.chkDevB.isChecked():
67 self.var_devices.append(str(self.txtDeviceB.text()))
69 self.var_devices.append(str(self.txtDeviceB.text()))
68 if self.chkDevC.isChecked():
70 if self.chkDevC.isChecked():
69 self.var_devices.append(str(self.txtDeviceC.text()))
71 self.var_devices.append(str(self.txtDeviceC.text()))
70 if self.chkDevD.isChecked():
72 if self.chkDevD.isChecked():
71 self.var_devices.append(str(self.txtDeviceD.text()))
73 self.var_devices.append(str(self.txtDeviceD.text()))
72
74
73 if len(self.var_devices) == 0:
75 if len(self.var_devices) == 0:
74 return False
76 return False
75 else:
77 else:
76 return True
78 return True
77
79
78
80
79 #----------------------------------------------------- Inicializacion para pruebas---------------------------------------------------------------
81 #----------------------------------------------------- Inicializacion para pruebas---------------------------------------------------------------
80
82
81 def set_parameters_test(self):
83 def set_parameters_test(self):
82 """
84 """
83 Se usa para inicializar ciertos parametros para pruebas
85 Se usa para inicializar ciertos parametros para pruebas
84 """
86 """
85 self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS')
87 self.txtDpath.setText('/home/ricardoar/optional/STORAGE/EW_DRIFTS')
86 self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager')
88 self.txtRpath.setText('/home/ricardoar/optional/prueba1_jro_backup_manager')
87 self.txtElabel.setText('EW_DRIFTS_pruebas')
89 self.txtElabel.setText('EW_DRIFTS_pruebas')
88 self.lstDcapacity.setCurrentIndex(4)
90 self.lstDcapacity.setCurrentIndex(4)
89 self.txtDcapacity.setValue(100.0)
91 self.txtDcapacity.setValue(100.0)
90 self.txtDcapacity.setReadOnly(False)
92 self.txtDcapacity.setReadOnly(False)
91 self.txtDeviceA.setText("/dev/scd0")
93 self.txtDeviceA.setText("/dev/scd0")
92 self.txtDeviceB.setText("/dev/scd1")
94 self.txtDeviceB.setText("/dev/scd1")
93 self.txtDeviceC.setText("/dev/scd2")
95 self.txtDeviceC.setText("/dev/scd2")
94 self.txtDeviceD.setText("/dev/scd3")
96 self.txtDeviceD.setText("/dev/scd3")
95
97
96
98
97
99
98 #----------------------------------------------------- crea parameters.conf ---------------------------------------------------------------
100 #----------------------------------------------------- crea parameters.conf ---------------------------------------------------------------
99
101
100 def make_parameters_conf(self):
102 def make_parameters_conf(self):
101 var_file = open("parameters.conf","w")
103 var_file = open("parameters.conf","w")
102 var_file.write(self.var_Dpath+"\n") #0 Ruta de los datos
104 var_file.write(self.var_Dpath+"\n") #0 Ruta de los datos
103 var_file.write(self.var_Rpath+"\n") #1 Ruta del proyecto
105 var_file.write(self.var_Rpath+"\n") #1 Ruta del proyecto
104 var_file.write(str(self.var_lstDtype)+"\n") #2 opcion Data Type
106 var_file.write(str(self.var_lstDtype)+"\n") #2 opcion Data Type
105 var_file.write(self.var_Dtype+"\n") #3 extension Data Type
107 var_file.write(self.var_Dtype+"\n") #3 extension Data Type
106 var_file.write(self.var_Elabel+"\n") #4 etiqueta
108 var_file.write(self.var_Elabel+"\n") #4 etiqueta
107 var_file.write(str(self.var_Copys)+"\n") #5 Numero de copias
109 var_file.write(str(self.var_Copys)+"\n") #5 Numero de copias
108 var_file.write(str(self.var_lstDcapacity)+"\n") #6 opcion Device Capacity
110 var_file.write(str(self.var_lstDcapacity)+"\n") #6 opcion Device Capacity
109 var_file.write(str(self.var_Dcapacity)+"\n") #7 tamaΓ±o Device Capacity
111 var_file.write(str(self.var_Dcapacity)+"\n") #7 tamaΓ±o Device Capacity
110 var_file.write(str(self.var_Discs)+"\n") #8 Numero de discos a grabar
112 var_file.write(str(self.var_Discs)+"\n") #8 Numero de discos a grabar
111 # var_file.write(str(self.lstStartDay.currentIndex())+"\n") #9 Indice fecha inicial
113 # var_file.write(str(self.lstStartDay.currentIndex())+"\n") #9 Indice fecha inicial
112 # var_file.write(str(self.lstStopDay.currentIndex())+"\n") #10 Indice fecha final
114 # var_file.write(str(self.lstStopDay.currentIndex())+"\n") #10 Indice fecha final
113
115
114 var_file.close()
116 var_file.close()
115
117
116 #----------------------------------------------------- carga parameters.conf ---------------------------------------------------------------
118 #----------------------------------------------------- carga parameters.conf ---------------------------------------------------------------
117
119
118 def get_parameters_conf(self):
120 def get_parameters_conf(self):
119 var_file = open("parameters.conf","r")
121 var_file = open("parameters.conf","r")
120 lines = var_file.readlines()
122 lines = var_file.readlines()
121 self.txtDpath.setText(lines[0][:-1]) #0
123 self.txtDpath.setText(lines[0][:-1]) #0
122 self.txtRpath.setText(lines[1][:-1]) #1
124 self.txtRpath.setText(lines[1][:-1]) #1
123 self.lstDtype.setCurrentIndex(int(lines[2])) #2
125 self.lstDtype.setCurrentIndex(int(lines[2])) #2
124 self.txtDtype.setText(lines[3][:-1]) #3
126 self.txtDtype.setText(lines[3][:-1]) #3
125 self.txtElabel.setText(lines[4][:-1]) #4
127 self.txtElabel.setText(lines[4][:-1]) #4
126 self.txtCopys.setValue(int(lines[5][:-1])) #5
128 self.txtCopys.setValue(int(lines[5][:-1])) #5
127 self.lstDcapacity.setCurrentIndex(int(lines[6])) #6
129 self.lstDcapacity.setCurrentIndex(int(lines[6])) #6
128 self.txtDcapacity.setValue(float(lines[7])) #7
130 self.txtDcapacity.setValue(float(lines[7])) #7
129 self.var_Discs = int(lines[8]) #8
131 self.var_Discs = int(lines[8]) #8
130 # var_StartDay = int(lines[6]) #9
132 # var_StartDay = int(lines[6]) #9
131 # var_StopDay = int(lines[7]) #10
133 # var_StopDay = int(lines[7]) #10
134 ################################
135 self.var_Copys = self.txtCopys.value() #5
136 ################################
137
132 var_file.close()
138 var_file.close()
133
139
134
140
135
141
136 #-------------------------- actualiza el valor de las variables con los parametros seleccionados -----------------------------
142 #-------------------------- actualiza el valor de las variables con los parametros seleccionados -----------------------------
137
143
138 def set_vars(self):
144 def set_vars(self):
139 self.var_Dpath = str(self.txtDpath.text()) #0
145 self.var_Dpath = str(self.txtDpath.text()) #0
140 self.var_Rpath = str(self.txtRpath.text()) #1
146 self.var_Rpath = str(self.txtRpath.text()) #1
141 self.var_lstDtype = self.lstDtype.currentIndex() #2
147 self.var_lstDtype = self.lstDtype.currentIndex() #2
142 self.var_Dtype = str(self.txtDtype.text()) #3
148 self.var_Dtype = str(self.txtDtype.text()) #3
143 self.var_Elabel = str(self.txtElabel.text()) #4
149 self.var_Elabel = str(self.txtElabel.text()) #4
144 self.var_Copys = self.txtCopys.value() #5
150 self.var_Copys = self.txtCopys.value() #5
145 self.var_lstDcapacity = self.lstDcapacity.currentIndex() #6
151 self.var_lstDcapacity = self.lstDcapacity.currentIndex() #6
146 self.var_Dcapacity = self.txtDcapacity.value() #7
152 self.var_Dcapacity = self.txtDcapacity.value() #7
147 self.var_Discs = self.var_Discs #8
153 self.var_Discs = self.var_Discs #8
154
155
156 #-------------------------- crea burning.conf -----------------------------
157
158 def make_burning_conf(self):
159 var_file = open("burning.conf","w")
160 var_n_burned_discs = ( ( (self.var_disc_n - 1) * self.var_Copys) + self.var_copy_n -1 )
161 var_file.write(str(var_n_burned_discs)+"\n") #0 Numero de discos ya grabados
162 var_file.write(str(self.var_disc_n)+"\n") #1 Disco actual para grabar
163 var_file.write(str(self.var_copy_n)+"\n") #2 Numero de copia actual para grabar
164 var_file.close()
165
166 #----------------------------------------------------- carga burning.conf ---------------------------------------------------------------
167
168 def get_burning_conf(self):
169 var_file = open("burning.conf","r")
170 lines = var_file.readlines()
171 self.var_burned_discs = int(lines[0]) #0
172 self.var_disc_n = int(lines[1])
173 self.var_copy_n = int(lines[2])
174 var_file.close()
148
175
149 #---------------------------------------------- Habilitacion y deshabilitacion de items -------------------------------------------------------
176 #---------------------------------------------- Habilitacion y deshabilitacion de items -------------------------------------------------------
150
177
151 def enabled_items1(var_bool, self):
178 def enabled_items1(var_bool, self):
152 self.tabParameters.setEnabled(not(var_bool))
179 self.tabParameters.setEnabled(not(var_bool))
153 self.lstDcapacity.setEnabled(not(var_bool))
180 self.lstDcapacity.setEnabled(not(var_bool))
154 self.txtDcapacity.setEnabled(not(var_bool))
181 self.txtDcapacity.setEnabled(not(var_bool))
155 self.actionChange_Parameters.setEnabled(var_bool)
182 self.actionChange_Parameters.setEnabled(var_bool)
156 self.btnGbkp.setEnabled(not(var_bool))
183 self.btnGbkp.setEnabled(not(var_bool))
157 self.btnRestart.setEnabled(var_bool)
184 self.btnRestart.setEnabled(var_bool)
158 self.btnStartburn.setEnabled(var_bool)
185 self.btnStartburn.setEnabled(var_bool)
159
186
160
187
161 def enabled_items2(var_bool, self):
188 def enabled_items2(var_bool, self):
162 self.btnRestart.setEnabled(not(var_bool))
189 self.btnRestart.setEnabled(not(var_bool))
163 self.btnStartburn.setEnabled(not(var_bool))
190 self.btnStartburn.setEnabled(not(var_bool))
164 self.btnStopburn.setEnabled(var_bool)
191 self.btnStopburn.setEnabled(var_bool)
165 self.chkCheck.setEnabled(not(var_bool))
192 self.chkCheck.setEnabled(not(var_bool))
@@ -1,169 +1,165
1 <?xml version="1.0" encoding="UTF-8"?>
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE Project SYSTEM "Project-4.6.dtd">
2 <!DOCTYPE Project SYSTEM "Project-4.6.dtd">
3 <!-- eric4 project file for project jro_backup_manager -->
3 <!-- eric4 project file for project jro_backup_manager -->
4 <!-- Saved: 2010-05-24, 08:55:25 -->
4 <!-- Saved: 2010-05-24, 15:03:39 -->
5 <!-- Copyright (C) 2010 , -->
5 <!-- Copyright (C) 2010 , -->
6 <Project version="4.6">
6 <Project version="4.6">
7 <Language>en</Language>
7 <Language>en</Language>
8 <ProgLanguage mixed="0">Python</ProgLanguage>
8 <ProgLanguage mixed="0">Python</ProgLanguage>
9 <ProjectType>Qt4</ProjectType>
9 <ProjectType>Qt4</ProjectType>
10 <Description></Description>
10 <Description></Description>
11 <Version>0.1</Version>
11 <Version>0.1</Version>
12 <Author></Author>
12 <Author></Author>
13 <Email></Email>
13 <Email></Email>
14 <Sources>
14 <Sources>
15 <Source>__init__.py</Source>
15 <Source>__init__.py</Source>
16 <Source>ui/Ui_MainWindow.py</Source>
16 <Source>ui/Ui_MainWindow.py</Source>
17 <Source>ui/MainWindow.py</Source>
17 <Source>ui/MainWindow.py</Source>
18 <Source>main.py</Source>
18 <Source>main.py</Source>
19 <Source>ui/__init__.py</Source>
19 <Source>ui/__init__.py</Source>
20 <Source>functions/__init__.py</Source>
20 <Source>functions/__init__.py</Source>
21 <Source>functions/functions.py</Source>
21 <Source>functions/functions.py</Source>
22 <Source>functions/functions2.py</Source>
22 <Source>functions/functions2.py</Source>
23 <Source>functions/func_doc.py</Source>
23 <Source>functions/func_doc.py</Source>
24 <Source>ui/Ui_About2.py</Source>
25 <Source>ui/Ui_Parameters2.py</Source>
26 <Source>ui/Ui_About.py</Source>
24 <Source>ui/Ui_About.py</Source>
27 <Source>ui/Ui_Parameters.py</Source>
25 <Source>ui/Ui_Parameters.py</Source>
28 </Sources>
26 </Sources>
29 <Forms>
27 <Forms>
30 <Form>ui/MainWindow.ui</Form>
28 <Form>ui/MainWindow.ui</Form>
31 <Form>ui/About2.ui</Form>
32 <Form>ui/Parameters2.ui</Form>
33 <Form>ui/About.ui</Form>
29 <Form>ui/About.ui</Form>
34 <Form>ui/Parameters.ui</Form>
30 <Form>ui/Parameters.ui</Form>
35 </Forms>
31 </Forms>
36 <Translations>
32 <Translations>
37 </Translations>
33 </Translations>
38 <Resources>
34 <Resources>
39 </Resources>
35 </Resources>
40 <Interfaces>
36 <Interfaces>
41 </Interfaces>
37 </Interfaces>
42 <Others>
38 <Others>
43 </Others>
39 </Others>
44 <MainScript>main.py</MainScript>
40 <MainScript>main.py</MainScript>
45 <Vcs>
41 <Vcs>
46 <VcsType>Subversion</VcsType>
42 <VcsType>Subversion</VcsType>
47 <VcsOptions>
43 <VcsOptions>
48 <dict>
44 <dict>
49 <key>
45 <key>
50 <string>add</string>
46 <string>add</string>
51 </key>
47 </key>
52 <value>
48 <value>
53 <list>
49 <list>
54 <string></string>
50 <string></string>
55 </list>
51 </list>
56 </value>
52 </value>
57 <key>
53 <key>
58 <string>checkout</string>
54 <string>checkout</string>
59 </key>
55 </key>
60 <value>
56 <value>
61 <list>
57 <list>
62 <string></string>
58 <string></string>
63 </list>
59 </list>
64 </value>
60 </value>
65 <key>
61 <key>
66 <string>commit</string>
62 <string>commit</string>
67 </key>
63 </key>
68 <value>
64 <value>
69 <list>
65 <list>
70 <string></string>
66 <string></string>
71 </list>
67 </list>
72 </value>
68 </value>
73 <key>
69 <key>
74 <string>diff</string>
70 <string>diff</string>
75 </key>
71 </key>
76 <value>
72 <value>
77 <list>
73 <list>
78 <string></string>
74 <string></string>
79 </list>
75 </list>
80 </value>
76 </value>
81 <key>
77 <key>
82 <string>export</string>
78 <string>export</string>
83 </key>
79 </key>
84 <value>
80 <value>
85 <list>
81 <list>
86 <string></string>
82 <string></string>
87 </list>
83 </list>
88 </value>
84 </value>
89 <key>
85 <key>
90 <string>global</string>
86 <string>global</string>
91 </key>
87 </key>
92 <value>
88 <value>
93 <list>
89 <list>
94 <string></string>
90 <string></string>
95 </list>
91 </list>
96 </value>
92 </value>
97 <key>
93 <key>
98 <string>history</string>
94 <string>history</string>
99 </key>
95 </key>
100 <value>
96 <value>
101 <list>
97 <list>
102 <string></string>
98 <string></string>
103 </list>
99 </list>
104 </value>
100 </value>
105 <key>
101 <key>
106 <string>log</string>
102 <string>log</string>
107 </key>
103 </key>
108 <value>
104 <value>
109 <list>
105 <list>
110 <string></string>
106 <string></string>
111 </list>
107 </list>
112 </value>
108 </value>
113 <key>
109 <key>
114 <string>remove</string>
110 <string>remove</string>
115 </key>
111 </key>
116 <value>
112 <value>
117 <list>
113 <list>
118 <string></string>
114 <string></string>
119 </list>
115 </list>
120 </value>
116 </value>
121 <key>
117 <key>
122 <string>status</string>
118 <string>status</string>
123 </key>
119 </key>
124 <value>
120 <value>
125 <list>
121 <list>
126 <string></string>
122 <string></string>
127 </list>
123 </list>
128 </value>
124 </value>
129 <key>
125 <key>
130 <string>tag</string>
126 <string>tag</string>
131 </key>
127 </key>
132 <value>
128 <value>
133 <list>
129 <list>
134 <string></string>
130 <string></string>
135 </list>
131 </list>
136 </value>
132 </value>
137 <key>
133 <key>
138 <string>update</string>
134 <string>update</string>
139 </key>
135 </key>
140 <value>
136 <value>
141 <list>
137 <list>
142 <string></string>
138 <string></string>
143 </list>
139 </list>
144 </value>
140 </value>
145 </dict>
141 </dict>
146 </VcsOptions>
142 </VcsOptions>
147 <VcsOtherData>
143 <VcsOtherData>
148 <dict>
144 <dict>
149 <key>
145 <key>
150 <string>standardLayout</string>
146 <string>standardLayout</string>
151 </key>
147 </key>
152 <value>
148 <value>
153 <bool>True</bool>
149 <bool>True</bool>
154 </value>
150 </value>
155 </dict>
151 </dict>
156 </VcsOtherData>
152 </VcsOtherData>
157 </Vcs>
153 </Vcs>
158 <FiletypeAssociations>
154 <FiletypeAssociations>
159 <FiletypeAssociation pattern="*.ui" type="FORMS" />
155 <FiletypeAssociation pattern="*.ui" type="FORMS" />
160 <FiletypeAssociation pattern="*.idl" type="INTERFACES" />
156 <FiletypeAssociation pattern="*.idl" type="INTERFACES" />
161 <FiletypeAssociation pattern="*.qm" type="TRANSLATIONS" />
157 <FiletypeAssociation pattern="*.qm" type="TRANSLATIONS" />
162 <FiletypeAssociation pattern="*.ptl" type="SOURCES" />
158 <FiletypeAssociation pattern="*.ptl" type="SOURCES" />
163 <FiletypeAssociation pattern="*.pyw" type="SOURCES" />
159 <FiletypeAssociation pattern="*.pyw" type="SOURCES" />
164 <FiletypeAssociation pattern="*.ui.h" type="FORMS" />
160 <FiletypeAssociation pattern="*.ui.h" type="FORMS" />
165 <FiletypeAssociation pattern="*.ts" type="TRANSLATIONS" />
161 <FiletypeAssociation pattern="*.ts" type="TRANSLATIONS" />
166 <FiletypeAssociation pattern="*.py" type="SOURCES" />
162 <FiletypeAssociation pattern="*.py" type="SOURCES" />
167 <FiletypeAssociation pattern="*.qrc" type="RESOURCES" />
163 <FiletypeAssociation pattern="*.qrc" type="RESOURCES" />
168 </FiletypeAssociations>
164 </FiletypeAssociations>
169 </Project> No newline at end of file
165 </Project>
@@ -1,484 +1,517
1 # -*- coding: utf-8 -*-
1 # -*- coding: utf-8 -*-
2
2
3 """
3 """
4 Module implementing MainWindow.
4 Module implementing MainWindow.
5 """
5 """
6
6
7 from PyQt4.QtGui import QMainWindow
7 from PyQt4.QtGui import QMainWindow
8 from PyQt4.QtCore import pyqtSignature
8 from PyQt4.QtCore import pyqtSignature
9 from PyQt4 import QtCore
9 from PyQt4 import QtCore
10 from Ui_MainWindow import Ui_MainWindow
10 from Ui_MainWindow import Ui_MainWindow
11 from Ui_Parameters import Ui_Parameters
11 from Ui_Parameters import Ui_Parameters
12 from Ui_About import Ui_About
12 from Ui_About import Ui_About
13 from PyQt4 import QtGui
13 from PyQt4 import QtGui
14 from subprocess import *
14 from subprocess import *
15 import sys
15 import sys
16 import os
16 import os
17 #import subprocess
17 #import subprocess
18 import commands
18 import commands
19 from functions import functions
19 from functions import functions
20 from functions import functions2
20 from functions import functions2
21
21
22 class MainWindow(QMainWindow, Ui_MainWindow):
22 class MainWindow(QMainWindow, Ui_MainWindow):
23 """
23 """
24 Class documentation goes here.
24 Class documentation goes here.
25 """
25 """
26
26
27 def __init__(self, parent = None):
27 def __init__(self, parent = None):
28 QMainWindow.__init__(self, parent)
28 QMainWindow.__init__(self, parent)
29 self.setupUi(self)
29 self.setupUi(self)
30
30
31 self.setupUi2()
31 self.setupUi2()
32 #sys.stdout = self #redirige salida estandar
32 #sys.stdout = self #redirige salida estandar
33
33
34 def setupUi2(self):
34 def setupUi2(self):
35
35
36 # functions2.detect_devices(self) #busca los dispositivos de grabacion
36 # functions2.detect_devices(self) #busca los dispositivos de grabacion
37
37
38 self.var_Discs = 0 #Numero de discos del proyecto
38 self.var_Discs = 0 #Numero de discos del proyecto
39 self.var_Copys = 0 #Numero de copias
39 self.var_Copys = 0 #Numero de copias
40 self.var_disc_n = 0
40 self.var_disc_n = 0
41 self.var_copy_n = 0
41 self.var_copy_n = 0
42 self.var_burned_discs = 0
42
43
43 self.var_list=[]
44 self.var_list=[]
44 self.var_sublist=[]
45 self.var_sublist=[]
45
46
46 self.var_devices=[]
47 self.var_devices=[]
47
48
48 self.var_step = 0
49 self.var_step = 0
49 self.bool_state_burning = False
50 self.bool_state_burning = False
50 self.blank_discs = False
51 self.blank_discs = False
51
52
52
53
53 #Revisa si existe el archivo de confirguracion
54 #Revisa si existe el archivo de confirguracion
54 if os.path.isfile("parameters.conf"):
55 if os.path.isfile("parameters.conf"):
56 functions2.get_parameters_conf(self)
55 self.txtInfo.append("Parameters were loaded from configuration file")
57 self.txtInfo.append("Parameters were loaded from configuration file")
56 functions2.get_parameters_conf(self)
57 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
58 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
58
59
59 else:
60 else:
60 # self.txtInfo.append("Elija los parametros de configuracion")
61 # self.txtInfo.append("Elija los parametros de configuracion")
61 functions2.set_parameters_test(self) #Establece ciertos parametros, para pruebas
62 functions2.set_parameters_test(self) #Establece ciertos parametros, para pruebas
62
63
63 functions2.set_vars(self) #Carga las variables de la clase con los parametros seleccionados
64 functions2.set_vars(self) #Carga las variables de la clase con los parametros seleccionados
64
65
65 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
66 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
66 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
67 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
67 functions.load_days(self)
68 functions.load_days(self)
68
69
69 if os.path.isfile("parameters.conf"):
70 if os.path.isfile("parameters.conf"):
70 functions2.enabled_items1(True, self) #Se bloquean los parametros de configuracion
71 functions2.enabled_items1(True, self) #Se bloquean los parametros de configuracion
71
72
73 if os.path.isfile("burning.conf"):
74 functions2.get_burning_conf(self)
75 self.txtInfo.append("Current disc: "+str(self.var_disc_n))
76 self.txtInfo.append("Current copy: "+str(self.var_copy_n))
77 self.btnStartburn.setText("Continue")
78
79 self.txtDeviceA.setText("/dev/scd0")
80 self.txtDeviceB.setText("/dev/scd1")
81 self.txtDeviceC.setText("/dev/scd2")
82 self.txtDeviceD.setText("/dev/scd3")
83
72 self.connect(self.actionChange_Parameters, QtCore.SIGNAL("triggered()"), self.changeParameters)
84 self.connect(self.actionChange_Parameters, QtCore.SIGNAL("triggered()"), self.changeParameters)
73 self.connect(self.actionAbout, QtCore.SIGNAL("triggered()"), self.about)
85 self.connect(self.actionAbout, QtCore.SIGNAL("triggered()"), self.about)
74
86
75 self.var_process = QtCore.QProcess()
87 self.var_process = QtCore.QProcess()
76 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput)
88 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput)
77 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardError()'), self.readError)
89 self.connect(self.var_process, QtCore.SIGNAL('readyReadStandardError()'), self.readError)
78 self.connect(self.var_process, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished)
90 self.connect(self.var_process, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished)
79
91
80 self.var_process_check = QtCore.QProcess()
92 self.var_process_check = QtCore.QProcess()
81 self.connect(self.var_process_check, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_check)
93 self.connect(self.var_process_check, QtCore.SIGNAL('readyReadStandardOutput()'), self.readOuput_check)
82 self.connect(self.var_process_check, QtCore.SIGNAL('readyReadStandardError()'), self.readError_check)
94 self.connect(self.var_process_check, QtCore.SIGNAL('readyReadStandardError()'), self.readError_check)
83 self.connect(self.var_process_check, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_check)
95 self.connect(self.var_process_check, QtCore.SIGNAL('finished(int,QProcess::ExitStatus)'), self.finished_check)
84
96
85 def write(self, txt):
97 def write(self, txt):
86 self.txtInfo.append(str(txt))
98 self.txtInfo.append(str(txt))
87
99
88 def changeParameters(self):
100 def changeParameters(self):
89 dlg=QtGui.QDialog()
101 dlg=QtGui.QDialog()
90 dlgui=Ui_Parameters()
102 dlgui=Ui_Parameters()
91 dlgui.setupUi(dlg)
103 dlgui.setupUi(dlg)
92 if (dlg.exec_() == QtGui.QDialog.Accepted):
104 if (dlg.exec_() == QtGui.QDialog.Accepted):
93 if dlgui.txtDisc.value() > self.var_Discs or dlgui.txtCopy.value() > dlgui.txtNcopys.value():
105 if dlgui.txtDisc.value() > self.var_Discs or dlgui.txtCopy.value() > dlgui.txtNcopys.value():
94 self.txtInfo.append("Wrong parameters")
106 self.txtInfo.append("Wrong parameters")
95 else:
107 else:
96 self.var_Copys = dlgui.txtNcopys.value()
108 self.var_Copys = dlgui.txtNcopys.value()
97 self.var_disc_n = dlgui.txtDisc.value()
109 self.var_disc_n = dlgui.txtDisc.value()
98 self.var_copy_n = dlgui.txtCopy.value()
110 self.var_copy_n = dlgui.txtCopy.value()
99 self.txtInfo.append("Changed parameters")
111 self.txtInfo.append("Changed parameters")
100
112
101
113
102 def about(self):
114 def about(self):
103 dlg_about=QtGui.QDialog()
115 dlg_about=QtGui.QDialog()
104 dlgui_about=Ui_About()
116 dlgui_about=Ui_About()
105 dlgui_about.setupUi(dlg_about)
117 dlgui_about.setupUi(dlg_about)
106 dlg_about.exec_()
118 dlg_about.exec_()
107
119
108 #----------------------------------------------------- Funciones del proceso ---------------------------------------------------------------
120 #----------------------------------------------------- Funciones del proceso ---------------------------------------------------------------
109
121
110 def readOuput(self):
122 def readOuput(self):
111 self.txtInfo.insertPlainText("stdout: " + QtCore.QString(self.var_process.readAllStandardOutput()))
123 self.txtInfo.insertPlainText("stdout: " + QtCore.QString(self.var_process.readAllStandardOutput()))
112
124
113 def readError(self):
125 def readError(self):
114 self.txtInfo.setText("stderr: " + QtCore.QString(self.var_process.readAllStandardError()))
126 self.txtInfo.insertPlainText("stderr: " + QtCore.QString(self.var_process.readAllStandardError()))
115
127
116 def finished(self):
128 def finished(self):
117 self.txtInfo.append("proceso terminado finished() "+QtCore.QString(self.var_process.exitCode())+"\n")
129 self.txtInfo.insertPlainText("process completed"+QtCore.QString(self.var_process.exitCode())+"\n")
118 if self.var_disc_n <= self.var_Discs and self.bool_state_burning:
130
131
132 if self.var_process.exitCode() != 0:
133 self.txtInfo.append("ERROR")
134
135 if self.bool_state_burning:
136 if self.var_step == 0:
137 self.var_step = 1 #Se ira al paso de la grabacion en la siguiente llamada
138
139 elif self.var_step == 1:
140 self.var_copy_n += 1
141
119 self.burning()
142 self.burning()
120
143
121
144
122 #----------------------------------------------------- Funciones del proceso de verificacion ---------------------------------------------------------------
145 #----------------------------------------------------- Funciones del proceso de verificacion ---------------------------------------------------------------
123
146
124 def readOuput_check(self):
147 def readOuput_check(self):
125 self.txtInfo.insertPlainText("stdout check: " + QtCore.QString(self.var_process_check.readAllStandardOutput()))
148 self.txtInfo.insertPlainText("stdout check: " + QtCore.QString(self.var_process_check.readAllStandardOutput()))
126
149
127 def readError_check(self):
150 def readError_check(self):
128 self.txtInfo.setText("stderr check: " + QtCore.QString(self.var_process_check.readAllStandardError()))
151 self.txtInfo.setText("stderr check: " + QtCore.QString(self.var_process_check.readAllStandardError()))
129
152
130 def finished_check(self):
153 def finished_check(self):
131 self.txtInfo.append("proceso terminado finished() check"+QtCore.QString(self.var_process_check.exitCode())+"\n")
154 self.txtInfo.append("check process completed "+QtCore.QString(self.var_process_check.exitCode())+"\n")
132
155
133
156
134 #----------------------------------------------------- Obtencion de la ruta de los datos ---------------------------------------------------------------
157 #----------------------------------------------------- Obtencion de la ruta de los datos ---------------------------------------------------------------
135
158
136 @pyqtSignature("")
159 @pyqtSignature("")
137 def on_btnDpath_clicked(self):
160 def on_btnDpath_clicked(self):
138 """
161 """
139 Permite seleccionar graficamente el direcorio de los datos a grabar
162 Permite seleccionar graficamente el direcorio de los datos a grabar
140 """
163 """
141 self.var_Dpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
164 self.var_Dpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
142 self.txtDpath.setText(self.var_Dpath)
165 self.txtDpath.setText(self.var_Dpath)
143 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
166 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
144 functions.load_days(self)
167 functions.load_days(self)
145
168
146
169
147 @pyqtSignature("")
170 @pyqtSignature("")
148 def on_txtDpath_editingFinished(self):
171 def on_txtDpath_editingFinished(self):
149 """
172 """
150 Carga la ruta editada y verifica que sea correcta y carga la lista de dias
173 Carga la ruta editada y verifica que sea correcta y carga la lista de dias
151 """
174 """
152 self.var_Dpath=str(self.txtDpath.text()) #Se carga la variable con la ruta recien editada
175 self.var_Dpath=str(self.txtDpath.text()) #Se carga la variable con la ruta recien editada
153 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
176 self.statusDpath = functions.dir_exists(self.var_Dpath, self)
154 functions.load_days(self)
177 functions.load_days(self)
155
178
156
179
157 #----------------------------------------------------- Obtencion de las ruta del proyecto ---------------------------------------------------------------
180 #----------------------------------------------------- Obtencion de las ruta del proyecto ---------------------------------------------------------------
158
181
159 @pyqtSignature("")
182 @pyqtSignature("")
160 def on_btnRpath_clicked(self):
183 def on_btnRpath_clicked(self):
161 """
184 """
162 Permite seleccionar graficamente el direcorio del proyecto
185 Permite seleccionar graficamente el direcorio del proyecto
163 """
186 """
164 self.var_Rpath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
187 self.var_Rpath = str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
165 self.txtRpath.setText(self.var_Rpath)
188 self.txtRpath.setText(self.var_Rpath)
166 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
189 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
167
190
168
191
169 @pyqtSignature("")
192 @pyqtSignature("")
170 def on_txtRpath_editingFinished(self):
193 def on_txtRpath_editingFinished(self):
171 """
194 """
172 Valida la ruta del proyecto
195 Valida la ruta del proyecto
173 """
196 """
174 self.var_Rpath = str(self.txtRpath.text()) #Se carga la variable con la ruta recien editada
197 self.var_Rpath = str(self.txtRpath.text()) #Se carga la variable con la ruta recien editada
175 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
198 self.statusRpath = functions.dir_exists(self.var_Rpath, self)
176
199
177
200
178 #----------------------------------------------------- Tipo de datos ---------------------------------------------------------------
201 #----------------------------------------------------- Tipo de datos ---------------------------------------------------------------
179
202
180 @pyqtSignature("int")
203 @pyqtSignature("int")
181 def on_lstDtype_activated(self, index):
204 def on_lstDtype_activated(self, index):
182 """
205 """
183 Permite elegir entre los tipos de archivos
206 Permite elegir entre los tipos de archivos
184 """
207 """
185 self.txtDtype.setReadOnly(True)
208 self.txtDtype.setReadOnly(True)
186 if index == 0:
209 if index == 0:
187 self.var_Dtype ='r'
210 self.var_Dtype ='r'
188 elif index == 1:
211 elif index == 1:
189 self.var_Dtype ='pdata'
212 self.var_Dtype ='pdata'
190 elif index == 2:
213 elif index == 2:
191 self.var_Dtype ='sswma'
214 self.var_Dtype ='sswma'
192 else :
215 else :
193 self.var_Dtype =''
216 self.var_Dtype =''
194 self.txtDtype.setReadOnly(False)
217 self.txtDtype.setReadOnly(False)
195
218
196 self.txtDtype.setText(self.var_Dtype)
219 self.txtDtype.setText(self.var_Dtype)
197 functions.load_days(self) #llamada a funcion
220 functions.load_days(self) #llamada a funcion
198
221
199 @pyqtSignature("")
222 @pyqtSignature("")
200 def on_txtDtype_editingFinished(self):
223 def on_txtDtype_editingFinished(self):
201 self.var_Dtype=str(self.txtDtype.text())
224 self.var_Dtype=str(self.txtDtype.text())
202 functions.load_days(self) #llamada a funcion
225 functions.load_days(self) #llamada a funcion
203
226
204
227
205 #----------------------------------------------------- Etiqueta ---------------------------------------------------------------
228 #----------------------------------------------------- Etiqueta ---------------------------------------------------------------
206
229
207 @pyqtSignature("")
230 @pyqtSignature("")
208 def on_txtElabel_editingFinished(self):
231 def on_txtElabel_editingFinished(self):
209 self.var_Elabel = str(self.txtElabel.text())
232 self.var_Elabel = str(self.txtElabel.text())
210
233
211 #----------------------------------------------------- Numero de copias ---------------------------------------------------------------
234 #----------------------------------------------------- Numero de copias ---------------------------------------------------------------
212 @pyqtSignature("")
235 @pyqtSignature("")
213 def on_txtCopys_editingFinished(self):
236 def on_txtCopys_editingFinished(self):
214 self.var_Copys = self.txtCopys.value()
237 self.var_Copys = self.txtCopys.value()
215
238
216 #----------------------------------------------------- Seleccion del rango de fechas ---------------------------------------------------------------
239 #----------------------------------------------------- Seleccion del rango de fechas ---------------------------------------------------------------
217
240
218 @pyqtSignature("int") #CLOSED
241 @pyqtSignature("int") #CLOSED
219 def on_lstStartDay_activated(self, index):
242 def on_lstStartDay_activated(self, index):
220 """
243 """
221 Cambia la lista de opciones en lstStopDay
244 Cambia la lista de opciones en lstStopDay
222 """
245 """
223 var_StopDay_index=self.lstStopDay.count() - self.lstStopDay.currentIndex()
246 var_StopDay_index=self.lstStopDay.count() - self.lstStopDay.currentIndex()
224 self.lstStopDay.clear()
247 self.lstStopDay.clear()
225
248
226 for i in self.var_list[index:]:
249 for i in self.var_list[index:]:
227 self.lstStopDay.addItem(i)
250 self.lstStopDay.addItem(i)
228
251
229 self.lstStopDay.setCurrentIndex(self.lstStopDay.count() - var_StopDay_index)
252 self.lstStopDay.setCurrentIndex(self.lstStopDay.count() - var_StopDay_index)
230
253
231 functions.get_sub_list(self)
254 functions.get_sub_list(self)
232
255
233
256
234 @pyqtSignature("int") #CLOSED
257 @pyqtSignature("int") #CLOSED
235 def on_lstStopDay_activated(self, index):
258 def on_lstStopDay_activated(self, index):
236 """
259 """
237 Cambia la lista de opciones en lstStartDay
260 Cambia la lista de opciones en lstStartDay
238 """
261 """
239 var_StartDay_index=self.lstStartDay.currentIndex()
262 var_StartDay_index=self.lstStartDay.currentIndex()
240 var_end_index = self.lstStopDay.count() - index
263 var_end_index = self.lstStopDay.count() - index
241 self.lstStartDay.clear()
264 self.lstStartDay.clear()
242
265
243 for i in self.var_list[:len(self.var_list) - var_end_index + 1]:
266 for i in self.var_list[:len(self.var_list) - var_end_index + 1]:
244 self.lstStartDay.addItem(i)
267 self.lstStartDay.addItem(i)
245
268
246 self.lstStartDay.setCurrentIndex(var_StartDay_index)
269 self.lstStartDay.setCurrentIndex(var_StartDay_index)
247
270
248 functions.get_sub_list(self)
271 functions.get_sub_list(self)
249
272
250
273
251 #----------------------------------------------------- Capacidad del dispositivo de grabacion ---------------------------------------------------------------
274 #----------------------------------------------------- Capacidad del dispositivo de grabacion ---------------------------------------------------------------
252
275
253 @pyqtSignature("")
276 @pyqtSignature("")
254 def on_txtDcapacity_editingFinished(self):
277 def on_txtDcapacity_editingFinished(self):
255 self.var_Dcapacity = self.txtDcapacity.value()
278 self.var_Dcapacity = self.txtDcapacity.value()
256
279
257
280
258 @pyqtSignature("int") #CLOSED
281 @pyqtSignature("int") #CLOSED
259 def on_lstDcapacity_activated(self, index):
282 def on_lstDcapacity_activated(self, index):
260 """
283 """
261 Permite elegir el tamaΓ±o del disco
284 Permite elegir el tamaΓ±o del disco
262 """
285 """
263 if index == 0:
286 if index == 0:
264 var_size=25.0
287 var_size=25.0
265 elif index == 1:
288 elif index == 1:
266 var_size=8.5
289 var_size=8.5
267 elif index == 2:
290 elif index == 2:
268 var_size=4.7
291 var_size=4.7
269 elif index == 3:
292 elif index == 3:
270 var_size=0.7
293 var_size=0.7
271
294
272 if index != 4:
295 if index != 4:
273 self.txtDcapacity.setValue(var_size*10**9/1024**2)
296 self.txtDcapacity.setValue(var_size*10**9/1024**2)
274 self.txtDcapacity.setReadOnly(True)
297 self.txtDcapacity.setReadOnly(True)
275 else:
298 else:
276 self.txtDcapacity.setValue(100.0)
299 self.txtDcapacity.setValue(100.0)
277 self.txtDcapacity.setReadOnly(False)
300 self.txtDcapacity.setReadOnly(False)
278
301
279 self.var_lstDcapacity = self.lstDcapacity.currentIndex()
302 self.var_lstDcapacity = self.lstDcapacity.currentIndex()
280 self.var_Dcapacity = self.txtDcapacity.value()
303 self.var_Dcapacity = self.txtDcapacity.value()
281
304
282
305
283 #==============================================================================
306 #==============================================================================
284 # Botones para la generacion de los archivos de configuracion y el proceso de grabacion
307 # Botones para la generacion de los archivos de configuracion y el proceso de grabacion
285 #==============================================================================
308 #==============================================================================
286
309
287 #----------------------------------------------------- Generacion de la configuracion usando los parametros ---------------------------------------------------------------
310 #----------------------------------------------------- Generacion de la configuracion usando los parametros ---------------------------------------------------------------
288
311
289 @pyqtSignature("")
312 @pyqtSignature("")
290 def on_btnGbkp_clicked(self):
313 def on_btnGbkp_clicked(self):
291 """
314 """
292 Generacion de archivos de configuracion usando los parametros
315 Generacion de archivos de configuracion usando los parametros
293 """
316 """
294
317
295 if functions.validate_parameters(self) == False:
318 if functions.validate_parameters(self) == False:
296 return
319 return
297
320
298 #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente
321 #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente
299 list_dirs=['gpath','iso','ppath', 'tmpdata']
322 list_dirs=['gpath','iso','ppath', 'tmpdata']
300 bool_make_dirs = functions.make_dirs(list_dirs, self)
323 bool_make_dirs = functions.make_dirs(list_dirs, self)
301 if bool_make_dirs == False:
324 if bool_make_dirs == False:
302 return
325 return
303
326
304 var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar
327 var_files_list = functions.list_files(self) #Se obtiene la lista de archivos a grabar
305
328
306 self.var_Discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
329 self.var_Discs = functions.make_files_dat(var_files_list, self) #Se crean los archivos .dat
307
330
308 functions.make_files_print(self) # Se crean los archivos .print
331 functions.make_files_print(self) # Se crean los archivos .print
309
332
310 functions2.make_parameters_conf(self) # se crea el archivo parameters.conf
333 functions2.make_parameters_conf(self) # se crea el archivo parameters.conf
311
334
312 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
335 self.txtInfo.append("Total number of discs for recording: "+str(self.var_Discs * self.var_Copys))
313
336
314 #Se bloquean los parametros de configuracion
337 #Se bloquean los parametros de configuracion
315 functions2.enabled_items1(True, self)
338 functions2.enabled_items1(True, self)
316
339
317
340
318
341
319 #----------------------------------------------------- Permite reiniciar la configuracion ---------------------------------------------------------------
342 #----------------------------------------------------- Permite reiniciar la configuracion ---------------------------------------------------------------
320
343
321 @pyqtSignature("")
344 @pyqtSignature("")
322 def on_btnRestart_clicked(self):
345 def on_btnRestart_clicked(self):
323 """
346 """
324 Permite que se puedan cambiar los parametros
347 Permite que se puedan cambiar los parametros
325 """
348 """
349 if os.path.isfile("parameters.conf"):
350 os.remove("parameters.conf")
351 if os.path.isfile("burning.conf"):
352 os.remove("burning.conf")
353
326 functions2.enabled_items1(False, self)
354 functions2.enabled_items1(False, self)
327 os.remove("parameters.conf")
355 self.btnStartburn.setText("Start Burn")
356
328
357
329
358
330 #----------------------------------------------------- Iniciar proceso de grabacion ---------------------------------------------------------------
359 #----------------------------------------------------- Iniciar proceso de grabacion ---------------------------------------------------------------
331
360
332 @pyqtSignature("")
361 @pyqtSignature("")
333 def on_btnStartburn_clicked(self):
362 def on_btnStartburn_clicked(self):
334 """
363 """
335 Se inicia el proceso de grabacion
364 Se inicia el proceso de grabacion
336 """
365 """
337
366 self.txtInfo.append("BUTTON: on_btnStartburn_clicked")
367 #Verifica que exista algun dispositivo de grabacion seleccionado
368 if not(functions2.selected_devices(self)):
369 self.txtInfo.append("There is no recording device selected")
370 return
371
372 # #Lista los dispositivos de grabacion a usar
373 # for dev in self.var_devices:
374 # self.txtInfo.append("recording device :"+dev)
375
376 #Si se ingresaron los DVDs en blanco
338 if self.blank_discs == True:
377 if self.blank_discs == True:
339 self.btnStartburn.setEnabled(False)
378 self.btnStartburn.setEnabled(False)
340 self.burning()
379 self.burning()
341 return
380 return
342
381
343 #Verifica que exista algun dispositivo de grabacion seleccionado
382 #Si se cargo los parametros de burning.conf
344 if not(functions2.selected_devices(self)):
383 if self.var_burned_discs != 0:
345 self.txtInfo.append("There is no recording device selected")
384 self.txtInfo.append("BURNED DISC: "+str(self.var_burned_discs))
385 self.var_step = 0
386 self.bool_state_burning = True
387 self.blank_discs = False
388 functions2.enabled_items2(True, self)
389 self.burning()
346 return
390 return
347
348 #Lista los dispositivos de grabacion a usar
349 for dev in self.var_devices:
350 self.txtInfo.append("recording device :"+dev)
351
391
352 #Asigna las variables con los valores iniciales
392 #Asigna las variables con los valores iniciales
353 self.var_disc_n = 0 # numero de disco actual para grabacion
393 self.var_disc_n = 1 # numero de disco actual para grabacion
354 self.var_copy_n = 0
394 self.var_copy_n = 1
395 self.var_burned_discs = 0 #numero de discos grabados
355 self.var_step = 0
396 self.var_step = 0
356 self.bool_state_burning = True
397 self.bool_state_burning = True
357 self.blank_discs = False
398 self.blank_discs = False
358
359 functions2.enabled_items2(True, self)
399 functions2.enabled_items2(True, self)
360 self.burning()
400 self.burning()
361
401
402
362 def burning(self):
403 def burning(self):
363
404
364 var_Rpath_ppath=self.var_Rpath+"/ppath"
405 var_Rpath_ppath=self.var_Rpath+"/ppath"
365 var_Rpath_iso=self.var_Rpath+"/iso"
406 var_Rpath_iso=self.var_Rpath+"/iso"
407
408 #Si ya se grabaron todas las copias del disco
409 if self.var_copy_n > self.var_Copys:
410 #borra la imagen.iso del numero de disco anterior
411 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
412 self.txtInfo.append("Deleting iso file")
413 # os.remove(file_iso)
414 self.var_copy_n = 1
415 self.var_disc_n += 1 # aumenta numero de disco actual para grabacion
416 self.var_step = 0
417
418 #Si ya se grabaron todos los discos
419 if self.var_disc_n > self.var_Discs:
420 self.bool_state_burning = False
421 self.txtInfo.append("Recording process is complete")
422 functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
423 return
424
425 self.txtInfo.append("\n"+str(self.var_disc_n)+" "+str(self.var_copy_n)+" "+str(self.var_step))
366
426
367 #Creacion del archivo.iso para la grabacion
427 #Creacion del archivo.iso para la grabacion
368 if self.var_step == 0:
428 if self.var_step == 0:
369 #borra la imagen.iso del numero de disco anterior
429 self.txtInfo.append("########## Disc number: "+str(self.var_disc_n)+"##########")
370 if self.var_disc_n > 0:
430 self.txtInfo.append("---------Creating iso file number: "+str(self.var_disc_n))
371 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
431 var_cmd = functions.cmd_iso(self)
372 # os.remove(file_iso)
373
374 self.var_disc_n += 1 # aumenta numero de disco actual para grabacion
375 self.var_copy_n = 0 # Resetea el numero actual de la copia
376
377 #Si ya se grabaron todos los discos
378 if self.var_disc_n > self.var_Discs:
379 self.bool_state_burning = False
380 self.txtInfo.append("Recording process is complete")
381 # functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
382
383 return
384
385 self.txtInfo.append("########## DISCO NUMERO: "+str(self.var_disc_n)+"##########")
386 self.txtInfo.append("--------Creando el iso del disco numero: "+str(self.var_disc_n))
387
388 #comando para la creacion del archivo.iso
389 file_dat=var_Rpath_ppath+"/"+self.var_Elabel+"_"+functions.i2s(self.var_disc_n)+".dat"
390 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
391 var_cmd = 'genisoimage -hide-joliet-trans-tbl -joliet-long -r '
392 var_cmd += ' -A '+self.var_Elabel+' -V '+self.var_Elabel
393 var_cmd += ' -graft-points -path-list '+ file_dat+' -o '+file_iso
394 self.var_step = 1 #Se ira al paso de la grabacion en la siguiente llamada
395
432
396 #Grabacion de los DVDs
433 #Grabacion de los DVDs
397 elif self.var_step == 1:
434 elif self.var_step == 1:
398 self.var_copy_n += 1 # numero de copia actual
435
399 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) ) % len(self.var_devices)
436 functions2.make_burning_conf(self)
437
438 var_index = ( ( (self.var_disc_n - 1) * self.var_Copys) + (self.var_copy_n - 1) - self.var_burned_discs ) % len(self.var_devices)
400
439
401 if var_index == 0 and self.blank_discs == False:
440 if var_index == 0 and self.blank_discs == False:
402 self.txtInfo.append("EXPULSANDO BANDEJAS")
441 functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
403 self.var_copy_n -= 1 #El numero de copia se regresa al estado anterior
404 # functions2.eject_devices(self) # Expulsa las bandejas de los dispostivos de grabacion
405 self.blank_discs = True
442 self.blank_discs = True
406 self.btnStartburn.setText("Continue")
443 self.btnStartburn.setText("Continue")
407 self.btnStartburn.setEnabled(True)
444 self.btnStartburn.setEnabled(True)
408 return
445 return
409
446
410 self.blank_discs = False
447 self.blank_discs = False
411
448
412 self.txtInfo.append("Grabando la copia numero: "+str(self.var_copy_n))
449 self.txtInfo.append("Grabando la copia numero: "+str(self.var_copy_n))
413 #Si esta es la ultima copia se pasara al siguiente disco en la siguiente llamada a la funcion
414 if self.var_copy_n == self.var_Copys:
415 self.var_step = 0
416
450
417 var_dev_tmp = self.var_devices[var_index]
451 var_dev_tmp = self.var_devices[var_index]
418 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
452 file_iso=var_Rpath_iso+"/"+functions.i2s(self.var_disc_n)+".iso"
419 var_cmd = "wodim -v dev="+var_dev_tmp+" speed=16 "+ file_iso
453 var_cmd = "wodim -v dev="+var_dev_tmp+" speed=16 "+ file_iso
420
454
421 self.var_process.start('ls')
455 self.var_process.start('echo "comando"')
422 self.txtInfo.append("CMD: "+var_cmd)
456 # self.txtInfo.append("CMD: "+var_cmd)
423
457
424 # self.txtInfo.append("creando iso")
458 # self.txtInfo.append("creando iso")
425 # self.var_process.start(var_cmd)
459 # self.var_process.start(var_cmd)
426
460
427
461
428 #----------------------------------------------------- Detener proceso de grabacion ---------------------------------------------------------------
462 #----------------------------------------------------- Detener proceso de grabacion ---------------------------------------------------------------
429
463
430 @pyqtSignature("")
464 @pyqtSignature("")
431 def on_btnStopburn_clicked(self):
465 def on_btnStopburn_clicked(self):
432 """
466 """
433 Slot documentation goes here.
467 Slot documentation goes here.
434 """
468 """
435 self.bool_state_burning = False
469 self.bool_state_burning = False
436 self.var_process.terminate() #Termina el proceso, si puede
470 self.var_process.terminate() #Termina el proceso, si puede
437 # self.var_process.kill() #Mata el proceso, no es la forma adecuada, solo usar si terminate() no funciona
471 # self.var_process.kill() #Mata el proceso, no es la forma adecuada, solo usar si terminate() no funciona
438 self.txtInfo.append("Stopped recording")
472 self.txtInfo.append("Stopped recording")
439 functions2.enabled_items2(False, self)
473 functions2.enabled_items2(False, self)
440 self.btnStartburn.setText("Start Burn")
441
474
442
475
443 #----------------------------------------------------- Testeo de las unidades de grabacion ---------------------------------------------------------------
476 #----------------------------------------------------- Testeo de las unidades de grabacion ---------------------------------------------------------------
444
477
445 @pyqtSignature("")
478 @pyqtSignature("")
446 def on_btnTdevA_clicked(self):
479 def on_btnTdevA_clicked(self):
447 var_dev = str(self.txtDeviceA.text())
480 var_dev = str(self.txtDeviceA.text())
448 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
481 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
449 commands.getstatusoutput(var_cmd)
482 commands.getstatusoutput(var_cmd)
450
483
451 @pyqtSignature("")
484 @pyqtSignature("")
452 def on_btnTdevB_clicked(self):
485 def on_btnTdevB_clicked(self):
453 var_dev = str(self.txtDeviceB.text())
486 var_dev = str(self.txtDeviceB.text())
454 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
487 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
455 commands.getstatusoutput(var_cmd)
488 commands.getstatusoutput(var_cmd)
456
489
457 @pyqtSignature("")
490 @pyqtSignature("")
458 def on_btnTdevC_clicked(self):
491 def on_btnTdevC_clicked(self):
459 var_dev = str(self.txtDeviceC.text())
492 var_dev = str(self.txtDeviceC.text())
460 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
493 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
461 commands.getstatusoutput(var_cmd)
494 commands.getstatusoutput(var_cmd)
462
495
463 @pyqtSignature("")
496 @pyqtSignature("")
464 def on_btnTdevD_clicked(self):
497 def on_btnTdevD_clicked(self):
465 var_dev = str(self.txtDeviceD.text())
498 var_dev = str(self.txtDeviceD.text())
466 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
499 var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev
467 commands.getstatusoutput(var_cmd)
500 commands.getstatusoutput(var_cmd)
468
501
469 @pyqtSignature("")
502 @pyqtSignature("")
470 def on_btnTDpath_clicked(self):
503 def on_btnTDpath_clicked(self):
471 """
504 """
472 Slot documentation goes here.
505 Slot documentation goes here.
473 """
506 """
474 self.var_TDpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
507 self.var_TDpath= str(QtGui.QFileDialog.getExistingDirectory(self, 'Open Directory', './', QtGui.QFileDialog.ShowDirsOnly))
475 self.txtTDpath.setText(self.var_TDpath)
508 self.txtTDpath.setText(self.var_TDpath)
476 self.statusTDpath = functions.dir_exists(self.var_TDpath, self)
509 self.statusTDpath = functions.dir_exists(self.var_TDpath, self)
477
510
478
511
479 @pyqtSignature("")
512 @pyqtSignature("")
480 def on_btnCHstart_clicked(self):
513 def on_btnCHstart_clicked(self):
481 """
514 """
482 Slot documentation goes here.
515 Slot documentation goes here.
483 """
516 """
484 pass
517 pass
General Comments 0
You need to be logged in to leave comments. Login now