@@ -0,0 +1,6 | |||||
|
1 | #Usando el modulo "subprocess", eric4 pide seleccion del tipo de subproceso (padre o hijo) | |||
|
2 | #por ello se prefiere usar el modulo "commands" | |||
|
3 | #p1= Popen(['find', var_Dpath, '-name', '*.r'], stdout=PIPE) | |||
|
4 | #p2= Popen(['awk', '-F/', '{print substr($NF,2,7)}'], stdin=p1.stdout, stdout=PIPE) | |||
|
5 | #output_p2= p2.communicate()[0] | |||
|
6 | #self.txtInfo.setText(output_p2) |
@@ -59,8 +59,9 | |||||
59 |
|
59 | |||
60 | #Si no se encuentra ningun archivo |
|
60 | #Si no se encuentra ningun archivo | |
61 | if len(output) == 0: |
|
61 | if len(output) == 0: | |
62 | self.btnGbkp.setEnabled(False) |
|
62 | self.txtInfo.append("No se encontraron archivos") | |
63 | return |
|
63 | self.btnGbkp.setEnabled(False) | |
|
64 | return | |||
64 |
|
65 | |||
65 | #Se cargan las listas para seleccionar StartDay y StopDay (QComboBox) |
|
66 | #Se cargan las listas para seleccionar StartDay y StopDay (QComboBox) | |
66 | for i in range(0, (len(output)+1)/8): |
|
67 | for i in range(0, (len(output)+1)/8): | |
@@ -72,5 +73,20 | |||||
72 | self.lstStopDay.setCurrentIndex(self.lstStartDay.count()-1) |
|
73 | self.lstStopDay.setCurrentIndex(self.lstStartDay.count()-1) | |
73 |
|
74 | |||
74 | self.btnGbkp.setEnabled(True) |
|
75 | self.btnGbkp.setEnabled(True) | |
|
76 | ||||
|
77 | ||||
|
78 | #Verifica que los parametros | |||
|
79 | def validate_parameters(self): | |||
|
80 | #Verifica que las rutas sean validas | |||
|
81 | if self.statusRpath == False: | |||
|
82 | self.txtInfo.append("Ruta de proyecto no valida") | |||
|
83 | return False | |||
75 |
|
84 | |||
|
85 | #Verifica la etiqueta | |||
|
86 | if len(self.var_Elabel) == 0: | |||
|
87 | self.txtInfo.append("Debe ingresar el nombre de la etiqueta") | |||
|
88 | return False | |||
|
89 | ||||
|
90 | return True | |||
76 |
|
91 | |||
|
92 |
@@ -37,6 +37,7 | |||||
37 | self.var_Dtype = self.txtDtype.text() |
|
37 | self.var_Dtype = self.txtDtype.text() | |
38 | self.var_Elabel = self.txtElabel.text() |
|
38 | self.var_Elabel = self.txtElabel.text() | |
39 | self.var_Copys = self.txtCopys.value() |
|
39 | self.var_Copys = self.txtCopys.value() | |
|
40 | self.var_Dcapacity = self.txtDcapacity.value() | |||
40 |
|
41 | |||
41 | self.var_n_files=0 |
|
42 | self.var_n_files=0 | |
42 | self.var_list=[] |
|
43 | self.var_list=[] | |
@@ -115,13 +116,24 | |||||
115 |
|
116 | |||
116 | @pyqtSignature("") |
|
117 | @pyqtSignature("") | |
117 | def on_txtDtype_editingFinished(self): |
|
118 | def on_txtDtype_editingFinished(self): | |
118 | """ |
|
|||
119 | Se activa cuando el tipo de archivo es ingresado manualmente |
|
|||
120 | """ |
|
|||
121 | self.var_Dtype=self.txtDtype.text() |
|
119 | self.var_Dtype=self.txtDtype.text() | |
122 | #llamada a funcion |
|
120 | functions.load_days(self) #llamada a funcion | |
123 | self.on_txtDpath_editingFinished() |
|
121 | ||
124 |
|
122 | |||
|
123 | @pyqtSignature("") | |||
|
124 | def on_txtElabel_editingFinished(self): | |||
|
125 | self.var_Elabel = self.txtElabel.text() | |||
|
126 | ||||
|
127 | ||||
|
128 | @pyqtSignature("") | |||
|
129 | def on_txtCopys_editingFinished(self): | |||
|
130 | self.var_Copys = self.txtCopys.value() | |||
|
131 | ||||
|
132 | ||||
|
133 | @pyqtSignature("") | |||
|
134 | def on_txtDcapacity_editingFinished(self): | |||
|
135 | self.var_Dcapacity = self.txtDcapacity.value() | |||
|
136 | ||||
125 |
|
137 | |||
126 | @pyqtSignature("int") #CLOSED |
|
138 | @pyqtSignature("int") #CLOSED | |
127 | def on_lstStartDay_activated(self, index): |
|
139 | def on_lstStartDay_activated(self, index): | |
@@ -167,10 +179,10 | |||||
167 | var_size=0.7 |
|
179 | var_size=0.7 | |
168 |
|
180 | |||
169 | if index != 4: |
|
181 | if index != 4: | |
170 |
self.txtDcapacity.set |
|
182 | self.txtDcapacity.setValue(var_size*10**9/1024**2) | |
171 | self.txtDcapacity.setReadOnly(True) |
|
183 | self.txtDcapacity.setReadOnly(True) | |
172 | else: |
|
184 | else: | |
173 |
self.txtDcapacity.set |
|
185 | self.txtDcapacity.setValue(100.0) | |
174 | self.txtDcapacity.setReadOnly(False) |
|
186 | self.txtDcapacity.setReadOnly(False) | |
175 |
|
187 | |||
176 |
|
188 | |||
@@ -180,23 +192,15 | |||||
180 | Cuando se presiona el boton btnGbkp |
|
192 | Cuando se presiona el boton btnGbkp | |
181 | """ |
|
193 | """ | |
182 |
|
194 | |||
183 | #Verifica que las rutas sean validas |
|
195 | if functions.validate_parameters(self) == False: | |
184 | if self.statusDpath == False or self.statusRpath == False: |
|
|||
185 | if self.statusDpath == False: |
|
|||
186 | self.txtInfo.append("Ruta de datos no valida") |
|
|||
187 | if self.statusRpath == False: |
|
|||
188 | self.txtInfo.append("Ruta de proyecto no valida") |
|
|||
189 | return |
|
196 | return | |
190 |
|
197 | |||
191 | #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente |
|
198 | #Crea las carpetas en la ruta del proyecto y verifica que se crearon correctamente | |
192 | var_Rpath=self.txtRpath.text() |
|
|||
193 | list_dirs=['gpath', 'iso', 'ppath'] |
|
199 | list_dirs=['gpath', 'iso', 'ppath'] | |
194 | functions.make_dirs(var_Rpath, list_dirs, self) |
|
200 | functions.make_dirs(self.var_Rpath, list_dirs, self) | |
195 |
|
201 | |||
196 | #Cargando variables con los parametros |
|
202 | #Cargando variables con los parametros | |
197 | var_Dpath=self.txtDpath.text() |
|
203 | var_Rpath_ppath=self.var_Rpath+"/ppath" #Ruta de los archivos a grabar | |
198 | var_Rpath=self.txtRpath.text() |
|
|||
199 | var_Rpath_ppath=var_Rpath+"/ppath" #Ruta de los archivos a grabar |
|
|||
200 | var_sublist=[] |
|
204 | var_sublist=[] | |
201 | for i in self.var_list[self.lstStartDay.currentIndex():self.lstStartDay.currentIndex() + self.lstStopDay.currentIndex()+1]: |
|
205 | for i in self.var_list[self.lstStartDay.currentIndex():self.lstStartDay.currentIndex() + self.lstStopDay.currentIndex()+1]: | |
202 | var_sublist.append(i) |
|
206 | var_sublist.append(i) | |
@@ -212,7 +216,7 | |||||
212 | #Busca los archivos con los parametros de busqueda |
|
216 | #Busca los archivos con los parametros de busqueda | |
213 | var_files_list=[] |
|
217 | var_files_list=[] | |
214 | for var_doy in var_sublist: |
|
218 | for var_doy in var_sublist: | |
215 | var_cmd="find " + str(var_Dpath) + " -name ?"+var_doy+"???."+ str(var_Dtype) + " |sort" |
|
219 | var_cmd="find " + str(self.var_Dpath) + " -name ?"+var_doy+"???."+ str(var_Dtype) + " |sort" | |
216 | var_output=commands.getstatusoutput(var_cmd)[1] |
|
220 | var_output=commands.getstatusoutput(var_cmd)[1] | |
217 | for var_file in var_output.split(): |
|
221 | for var_file in var_output.split(): | |
218 | var_files_list.append(var_file) #Almacena cada archivo en la lista |
|
222 | var_files_list.append(var_file) #Almacena cada archivo en la lista | |
@@ -235,7 +239,7 | |||||
235 | var_file = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".dat","w") |
|
239 | var_file = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".dat","w") | |
236 | #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat |
|
240 | #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat | |
237 | for line in var_files_list_2: |
|
241 | for line in var_files_list_2: | |
238 | var_tmp_path=(line.split(var_Dpath)[1]).split('/') |
|
242 | var_tmp_path=(line.split(self.var_Dpath)[1]).split('/') | |
239 | var_tmp_path2="/" |
|
243 | var_tmp_path2="/" | |
240 | for l in range(0, len(var_tmp_path)-1): |
|
244 | for l in range(0, len(var_tmp_path)-1): | |
241 | var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" |
|
245 | var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" | |
@@ -252,7 +256,7 | |||||
252 | var_file = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".dat","w") |
|
256 | var_file = open(var_Rpath_ppath+"/"+self.txtElabel.text()+"_"+functions.i2s(var_n)+".dat","w") | |
253 | #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat |
|
257 | #Se aΓ±ade la lista de archivos a grabar en el DVD al archivo .dat | |
254 | for line in var_files_list_2: |
|
258 | for line in var_files_list_2: | |
255 | var_tmp_path=(line.split(var_Dpath)[1]).split('/') |
|
259 | var_tmp_path=(line.split(self.var_Dpath)[1]).split('/') | |
256 | var_tmp_path2="/" |
|
260 | var_tmp_path2="/" | |
257 | for l in range(0, len(var_tmp_path)-1): |
|
261 | for l in range(0, len(var_tmp_path)-1): | |
258 | var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" |
|
262 | var_tmp_path2=var_tmp_path2+str(var_tmp_path[l])+"/" | |
@@ -324,7 +328,10 | |||||
324 |
|
328 | |||
325 | #Se deshabilita el Tab Parameters y el boton btnGbkp |
|
329 | #Se deshabilita el Tab Parameters y el boton btnGbkp | |
326 | self.tabParameters.setEnabled(False) |
|
330 | self.tabParameters.setEnabled(False) | |
327 |
self. |
|
331 | self.lstDcapacity.setEnabled(False) | |
|
332 | self.txtDcapacity.setEnabled(False) | |||
|
333 | self.btnGbkp.setEnabled(False) | |||
|
334 | self.btnRestart.setEnabled(True) | |||
328 |
|
335 | |||
329 |
|
336 | |||
330 | @pyqtSignature("") |
|
337 | @pyqtSignature("") | |
@@ -333,7 +340,10 | |||||
333 | Slot documentation goes here. |
|
340 | Slot documentation goes here. | |
334 | """ |
|
341 | """ | |
335 | self.tabParameters.setEnabled(True) |
|
342 | self.tabParameters.setEnabled(True) | |
|
343 | self.lstDcapacity.setEnabled(True) | |||
|
344 | self.txtDcapacity.setEnabled(True) | |||
336 | self.btnGbkp.setEnabled(True) |
|
345 | self.btnGbkp.setEnabled(True) | |
|
346 | self.btnRestart.setEnabled(False) | |||
337 |
|
347 | |||
338 |
|
348 | |||
339 | @pyqtSignature("") |
|
349 | @pyqtSignature("") | |
@@ -404,3 +414,5 | |||||
404 | var_dev = str(self.txtDeviceD.text()) |
|
414 | var_dev = str(self.txtDeviceD.text()) | |
405 | var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev |
|
415 | var_cmd = 'eject ' + var_dev + '; eject -t ' + var_dev | |
406 | commands.getstatusoutput(var_cmd) |
|
416 | commands.getstatusoutput(var_cmd) | |
|
417 | ||||
|
418 |
@@ -500,7 +500,7 | |||||
500 | </sizepolicy> |
|
500 | </sizepolicy> | |
501 | </property> |
|
501 | </property> | |
502 | <property name="text"> |
|
502 | <property name="text"> | |
503 | <string>Device Capacity</string> |
|
503 | <string>Device Capacity (MB)</string> | |
504 | </property> |
|
504 | </property> | |
505 | </widget> |
|
505 | </widget> | |
506 | </item> |
|
506 | </item> | |
@@ -557,12 +557,24 | |||||
557 | </widget> |
|
557 | </widget> | |
558 | </item> |
|
558 | </item> | |
559 | <item> |
|
559 | <item> | |
560 |
<widget class="Q |
|
560 | <widget class="QDoubleSpinBox" name="txtDcapacity"> | |
561 |
<property name=" |
|
561 | <property name="sizePolicy"> | |
562 | <string>4482.26928711</string> |
|
562 | <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> | |
|
563 | <horstretch>0</horstretch> | |||
|
564 | <verstretch>0</verstretch> | |||
|
565 | </sizepolicy> | |||
563 | </property> |
|
566 | </property> | |
564 | <property name="readOnly"> |
|
567 | <property name="readOnly"> | |
565 | <bool>true</bool> |
|
568 | <bool>true</bool> | |
|
569 | </property> | |||
|
570 | <property name="minimum"> | |||
|
571 | <double>100.000000000000000</double> | |||
|
572 | </property> | |||
|
573 | <property name="maximum"> | |||
|
574 | <double>99999.990000000005239</double> | |||
|
575 | </property> | |||
|
576 | <property name="value"> | |||
|
577 | <double>4482.270000000000437</double> | |||
566 | </property> |
|
578 | </property> | |
567 | </widget> |
|
579 | </widget> | |
568 | </item> |
|
580 | </item> | |
@@ -832,7 +844,6 | |||||
832 | <tabstop>chkSequentially</tabstop> |
|
844 | <tabstop>chkSequentially</tabstop> | |
833 | <tabstop>chkSalert</tabstop> |
|
845 | <tabstop>chkSalert</tabstop> | |
834 | <tabstop>lstDcapacity</tabstop> |
|
846 | <tabstop>lstDcapacity</tabstop> | |
835 | <tabstop>txtDcapacity</tabstop> |
|
|||
836 | <tabstop>chkPSgraphic</tabstop> |
|
847 | <tabstop>chkPSgraphic</tabstop> | |
837 | <tabstop>lineEdit_17</tabstop> |
|
848 | <tabstop>lineEdit_17</tabstop> | |
838 | <tabstop>txtSTATUSa</tabstop> |
|
849 | <tabstop>txtSTATUSa</tabstop> |
@@ -2,7 +2,7 | |||||
2 |
|
2 | |||
3 | # Form implementation generated from reading ui file '/home/ricardoar/JRO_SVN/eric4/jro_backup_manager/ui/MainWindow.ui' |
|
3 | # Form implementation generated from reading ui file '/home/ricardoar/JRO_SVN/eric4/jro_backup_manager/ui/MainWindow.ui' | |
4 | # |
|
4 | # | |
5 |
# Created: |
|
5 | # Created: Mon May 17 00:37:27 2010 | |
6 | # by: PyQt4 UI code generator 4.7.2 |
|
6 | # by: PyQt4 UI code generator 4.7.2 | |
7 | # |
|
7 | # | |
8 | # WARNING! All changes made in this file will be lost! |
|
8 | # WARNING! All changes made in this file will be lost! | |
@@ -312,8 +312,16 | |||||
312 | self.lstDcapacity.addItem("") |
|
312 | self.lstDcapacity.addItem("") | |
313 | self.lstDcapacity.addItem("") |
|
313 | self.lstDcapacity.addItem("") | |
314 | self.horizontalLayout_10.addWidget(self.lstDcapacity) |
|
314 | self.horizontalLayout_10.addWidget(self.lstDcapacity) | |
315 |
self.txtDcapacity = QtGui.Q |
|
315 | self.txtDcapacity = QtGui.QDoubleSpinBox(self.tabDconfig) | |
|
316 | sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Fixed) | |||
|
317 | sizePolicy.setHorizontalStretch(0) | |||
|
318 | sizePolicy.setVerticalStretch(0) | |||
|
319 | sizePolicy.setHeightForWidth(self.txtDcapacity.sizePolicy().hasHeightForWidth()) | |||
|
320 | self.txtDcapacity.setSizePolicy(sizePolicy) | |||
316 | self.txtDcapacity.setReadOnly(True) |
|
321 | self.txtDcapacity.setReadOnly(True) | |
|
322 | self.txtDcapacity.setMinimum(100.0) | |||
|
323 | self.txtDcapacity.setMaximum(99999.99) | |||
|
324 | self.txtDcapacity.setProperty("value", 4482.27) | |||
317 | self.txtDcapacity.setObjectName("txtDcapacity") |
|
325 | self.txtDcapacity.setObjectName("txtDcapacity") | |
318 | self.horizontalLayout_10.addWidget(self.txtDcapacity) |
|
326 | self.horizontalLayout_10.addWidget(self.txtDcapacity) | |
319 | self.chkPSgraphic = QtGui.QCheckBox(self.tabDconfig) |
|
327 | self.chkPSgraphic = QtGui.QCheckBox(self.tabDconfig) | |
@@ -482,8 +490,7 | |||||
482 | MainWindow.setTabOrder(self.chkSimultaneously, self.chkSequentially) |
|
490 | MainWindow.setTabOrder(self.chkSimultaneously, self.chkSequentially) | |
483 | MainWindow.setTabOrder(self.chkSequentially, self.chkSalert) |
|
491 | MainWindow.setTabOrder(self.chkSequentially, self.chkSalert) | |
484 | MainWindow.setTabOrder(self.chkSalert, self.lstDcapacity) |
|
492 | MainWindow.setTabOrder(self.chkSalert, self.lstDcapacity) | |
485 |
MainWindow.setTabOrder(self.lstDcapacity, self. |
|
493 | MainWindow.setTabOrder(self.lstDcapacity, self.chkPSgraphic) | |
486 | MainWindow.setTabOrder(self.txtDcapacity, self.chkPSgraphic) |
|
|||
487 | MainWindow.setTabOrder(self.chkPSgraphic, self.lineEdit_17) |
|
494 | MainWindow.setTabOrder(self.chkPSgraphic, self.lineEdit_17) | |
488 | MainWindow.setTabOrder(self.lineEdit_17, self.txtSTATUSa) |
|
495 | MainWindow.setTabOrder(self.lineEdit_17, self.txtSTATUSa) | |
489 | MainWindow.setTabOrder(self.txtSTATUSa, self.txtSTATUSb) |
|
496 | MainWindow.setTabOrder(self.txtSTATUSa, self.txtSTATUSb) | |
@@ -542,14 +549,13 | |||||
542 | self.lblBprocess.setText(QtGui.QApplication.translate("MainWindow", "Burning process", None, QtGui.QApplication.UnicodeUTF8)) |
|
549 | self.lblBprocess.setText(QtGui.QApplication.translate("MainWindow", "Burning process", None, QtGui.QApplication.UnicodeUTF8)) | |
543 | self.chkSimultaneously.setText(QtGui.QApplication.translate("MainWindow", "Simultaneously", None, QtGui.QApplication.UnicodeUTF8)) |
|
550 | self.chkSimultaneously.setText(QtGui.QApplication.translate("MainWindow", "Simultaneously", None, QtGui.QApplication.UnicodeUTF8)) | |
544 | self.chkSequentially.setText(QtGui.QApplication.translate("MainWindow", "Sequentially", None, QtGui.QApplication.UnicodeUTF8)) |
|
551 | self.chkSequentially.setText(QtGui.QApplication.translate("MainWindow", "Sequentially", None, QtGui.QApplication.UnicodeUTF8)) | |
545 | self.lblDcapacity.setText(QtGui.QApplication.translate("MainWindow", "Device Capacity", None, QtGui.QApplication.UnicodeUTF8)) |
|
552 | self.lblDcapacity.setText(QtGui.QApplication.translate("MainWindow", "Device Capacity (MB)", None, QtGui.QApplication.UnicodeUTF8)) | |
546 | self.chkSalert.setText(QtGui.QApplication.translate("MainWindow", "Sound Alert", None, QtGui.QApplication.UnicodeUTF8)) |
|
553 | self.chkSalert.setText(QtGui.QApplication.translate("MainWindow", "Sound Alert", None, QtGui.QApplication.UnicodeUTF8)) | |
547 | self.lstDcapacity.setItemText(0, QtGui.QApplication.translate("MainWindow", "BluRay [25.0 GB]", None, QtGui.QApplication.UnicodeUTF8)) |
|
554 | self.lstDcapacity.setItemText(0, QtGui.QApplication.translate("MainWindow", "BluRay [25.0 GB]", None, QtGui.QApplication.UnicodeUTF8)) | |
548 | self.lstDcapacity.setItemText(1, QtGui.QApplication.translate("MainWindow", "DVD2 [8.5 GB]", None, QtGui.QApplication.UnicodeUTF8)) |
|
555 | self.lstDcapacity.setItemText(1, QtGui.QApplication.translate("MainWindow", "DVD2 [8.5 GB]", None, QtGui.QApplication.UnicodeUTF8)) | |
549 | self.lstDcapacity.setItemText(2, QtGui.QApplication.translate("MainWindow", "DVD1 [4.7 GB]", None, QtGui.QApplication.UnicodeUTF8)) |
|
556 | self.lstDcapacity.setItemText(2, QtGui.QApplication.translate("MainWindow", "DVD1 [4.7 GB]", None, QtGui.QApplication.UnicodeUTF8)) | |
550 | self.lstDcapacity.setItemText(3, QtGui.QApplication.translate("MainWindow", "CD [0.7 GB]", None, QtGui.QApplication.UnicodeUTF8)) |
|
557 | self.lstDcapacity.setItemText(3, QtGui.QApplication.translate("MainWindow", "CD [0.7 GB]", None, QtGui.QApplication.UnicodeUTF8)) | |
551 | self.lstDcapacity.setItemText(4, QtGui.QApplication.translate("MainWindow", "Other [? GB]", None, QtGui.QApplication.UnicodeUTF8)) |
|
558 | self.lstDcapacity.setItemText(4, QtGui.QApplication.translate("MainWindow", "Other [? GB]", None, QtGui.QApplication.UnicodeUTF8)) | |
552 | self.txtDcapacity.setText(QtGui.QApplication.translate("MainWindow", "4482.26928711", None, QtGui.QApplication.UnicodeUTF8)) |
|
|||
553 | self.chkPSgraphic.setText(QtGui.QApplication.translate("MainWindow", "PS Graphic", None, QtGui.QApplication.UnicodeUTF8)) |
|
559 | self.chkPSgraphic.setText(QtGui.QApplication.translate("MainWindow", "PS Graphic", None, QtGui.QApplication.UnicodeUTF8)) | |
554 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabDconfig), QtGui.QApplication.translate("MainWindow", "Device Config.", None, QtGui.QApplication.UnicodeUTF8)) |
|
560 | self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabDconfig), QtGui.QApplication.translate("MainWindow", "Device Config.", None, QtGui.QApplication.UnicodeUTF8)) | |
555 | self.lblSTATUS.setText(QtGui.QApplication.translate("MainWindow", "STATUS", None, QtGui.QApplication.UnicodeUTF8)) |
|
561 | self.lblSTATUS.setText(QtGui.QApplication.translate("MainWindow", "STATUS", None, QtGui.QApplication.UnicodeUTF8)) |
General Comments 0
You need to be logged in to leave comments.
Login now