def _save_files(self, save_option, write_column_headers, processed_list, processed_files, success_count): """ Parámetros: - save_option: de qué forma guardar los espectros - write_column_headers: incluir o no el nombre de cada espectro en el archivo - processed_list, processed_files: listas con los datos procesados y con el nombre de los archivos originales respectivamente - success_count: es el número de archivos que se deben guardar. Devuelve el número de espectros guardados, o None si no se han guardado los esfpectros debido al usuario. Si se devuelve None se debería volver a preguntar al usuario si desea guardar los resultados. """ # 1. Hacer que el usuario escoja en qué fichero o en qué carpeta quiere # guardar los resultados if (save_option==self.save_options_page.SO_ONEFILE_ONEX) or \ (save_option==self.save_options_page.SO_ONEFILE_MULTIPLEX): continuar = True while continuar: output_fn = self._choose_file_to_save() continuar = False # Salir si el usuario declina elegir un archivo: if not output_fn: return None # Comprobar si el archivo existe, preguntar si sobreescribirlo: elif os.path.exists(output_fn): mensaje=_("The file %s already exist, do you want to overwrite it?") \ % os.path.split(output_fn)[1] if ask_yesno( title=mensaje ) != gtk.RESPONSE_YES: continuar = True self.current_folder = os.path.split(output_fn)[0] ## update current folder!! elif (save_option==self.save_options_page.SO_MULTIPLE_FILES): output_folder = self._choose_folder_to_save() # Salir si el usuario declina elegir una carpeta: if not output_folder: return None self.current_folder = output_folder ## update current folder!! # 2. Salvar los resultados según la opción elegida por el usuario if (save_option==self.save_options_page.SO_ONEFILE_ONEX): # Comprobar si todos los ficheros tienen el mismo eje x... results = check_homogeneity(processed_files) if results: (startx, xpitch) = results save_to_one_file_onex(processed_files, processed_list, startx, xpitch, output_fn, write_column_headers) # Asumir que hemos guardado todos los espectros: return_value = success_count # ... si no lo tienen, entonces quizá el usuario quiera guardar los # datos del eje x de cada expectro: else: if ask_yesno(title=heterogeneus_xdata_msg) == gtk.RESPONSE_YES: save_to_one_file_multiplex(processed_files, processed_list, output_fn) # Asumir que hemos guardado todos los espectros: return_value = success_count else: return_value = None elif (save_option==self.save_options_page.SO_ONEFILE_MULTIPLEX): save_to_one_file_multiplex(processed_files, processed_list, output_fn) # Asumir que hemos guardado todos los espectros: return_value = success_count elif (save_option==self.save_options_page.SO_MULTIPLE_FILES): return_value = save_to_separate_files(processed_files, output_folder) else: return_value = None return return_value
def _save_files(self, save_option, write_column_headers, processed_list, processed_files, success_count): """ Parámetros: - save_option: de qué forma guardar los espectros - write_column_headers: incluir o no el nombre de cada espectro en el archivo - processed_list, processed_files: listas con los datos procesados y con el nombre de los archivos originales respectivamente - success_count: es el número de archivos que se deben guardar. Devuelve el número de espectros guardados, o None si no se han guardado los esfpectros debido al usuario. Si se devuelve None se debería volver a preguntar al usuario si desea guardar los resultados. """ # 1. Hacer que el usuario escoja en qué fichero o en qué carpeta quiere # guardar los resultados if (save_option==self.save_options_page.SO_ONEFILE_ONEX) or \ (save_option==self.save_options_page.SO_ONEFILE_MULTIPLEX): continuar = True while continuar: output_fn = self._choose_file_to_save() continuar = False # Salir si el usuario declina elegir un archivo: if not output_fn: return None # Comprobar si el archivo existe, preguntar si sobreescribirlo: elif os.path.exists(output_fn): mensaje=_("The file %s already exist, do you want to overwrite it?") \ % os.path.split(output_fn)[1] if ask_yesno(title=mensaje) != gtk.RESPONSE_YES: continuar = True self.current_folder = os.path.split(output_fn)[ 0] ## update current folder!! elif (save_option == self.save_options_page.SO_MULTIPLE_FILES): output_folder = self._choose_folder_to_save() # Salir si el usuario declina elegir una carpeta: if not output_folder: return None self.current_folder = output_folder ## update current folder!! # 2. Salvar los resultados según la opción elegida por el usuario if (save_option == self.save_options_page.SO_ONEFILE_ONEX): # Comprobar si todos los ficheros tienen el mismo eje x... results = check_homogeneity(processed_files) if results: (startx, xpitch) = results save_to_one_file_onex(processed_files, processed_list, startx, xpitch, output_fn, write_column_headers) # Asumir que hemos guardado todos los espectros: return_value = success_count # ... si no lo tienen, entonces quizá el usuario quiera guardar los # datos del eje x de cada expectro: else: if ask_yesno(title=heterogeneus_xdata_msg) == gtk.RESPONSE_YES: save_to_one_file_multiplex(processed_files, processed_list, output_fn) # Asumir que hemos guardado todos los espectros: return_value = success_count else: return_value = None elif (save_option == self.save_options_page.SO_ONEFILE_MULTIPLEX): save_to_one_file_multiplex(processed_files, processed_list, output_fn) # Asumir que hemos guardado todos los espectros: return_value = success_count elif (save_option == self.save_options_page.SO_MULTIPLE_FILES): return_value = save_to_separate_files(processed_files, output_folder) else: return_value = None return return_value
def _apply_cb(self, widget): """ Este callback es llamado cuando el usuario ha pulsado el botón "Aplicar" en una página de tipo ASSISTANT_PAGE_CONFIRM, pero siempre una vez que se ha mostrado la página siguiente a dicha página. En este wizzard tenemos 2 páginas de confirmación, la página 2 en la que se seleccionan las opciones de procesado y la página 4 en la que se seleccionan las opciones de guardado. Por tanto en esta página se llevarán a cabo: #1 El procesado de los datos (cuando página actual == 3) #2 El guardado de los datos procesados (cuando la página actual==5) """ page = self.get_nth_page(self.get_current_page()) print "apply_cb, current_page=", page #debug #if page == self.summary_page: if page == self.options_page: # Check if blank is included in spectra list(?) # if it is, then allow the user to re-run the options dialo self.options = self.options_page.get_options() if self.options.subtract_blank: if self.options.blank_fn in self.selection_page.spectra_db: if ask_yesno(title=self.blank_msg, parent=self)!=gtk.RESPONSE_YES: self.set_current_page(2) return # Process spectra self.spc_list = self.selection_page.get_ordered_data() process_form = ProcessForm() processor = JwsProcessor(process_form) results = processor.process_files(options=self.options, spectra_list=self.spc_list) if results: (self.processed_files, self.processed_list, self.success_count) = results else: self.success_count = 0 # Show the results in self.summary_page info_buffer = processor.report_buffer process_form.destroy() if self.success_count > 0: mensaje = _('Successfully processed files: %(#)d out of %(##)d.') \ % {'#': self.success_count, '##':len(self.spc_list)} image_type = gtk.STOCK_DIALOG_INFO else: mensaje = _("Spectra could not be processed!") image_type = gtk.STOCK_DIALOG_ERROR self.__no_files_processed = True self.summary_page.set_message(mensaje, info_buffer, image_type) self.set_page_complete(self.summary_page, True) #elif page == self.final_page: elif page == self.save_options_page: # Save files print self.save_options_page.get_option() #debug save_option = self.save_options_page.get_option() column_headers_option = self.save_options_page.get_column_headers_option() if save_option != self.save_options_page.SO_DONT_SAVE: files_saved = self._save_files( save_option, column_headers_option, self.processed_list, self.processed_files, self.success_count) print "Files saved = ", files_saved #debug if files_saved is None: self.set_current_page(4) else: msg = _("Successfully saved files: %(#)d out of %(##)d") % \ {'#':files_saved, '##':len(self.processed_list)} self.final_page.set_text(msg) else: self.final_page.set_text(_("Results have not been saved."))
def _apply_cb(self, widget): """ Este callback es llamado cuando el usuario ha pulsado el botón "Aplicar" en una página de tipo ASSISTANT_PAGE_CONFIRM, pero siempre una vez que se ha mostrado la página siguiente a dicha página. En este wizzard tenemos 2 páginas de confirmación, la página 2 en la que se seleccionan las opciones de procesado y la página 4 en la que se seleccionan las opciones de guardado. Por tanto en esta página se llevarán a cabo: #1 El procesado de los datos (cuando página actual == 3) #2 El guardado de los datos procesados (cuando la página actual==5) """ page = self.get_nth_page(self.get_current_page()) print "apply_cb, current_page=", page #debug #if page == self.summary_page: if page == self.options_page: # Check if blank is included in spectra list(?) # if it is, then allow the user to re-run the options dialo self.options = self.options_page.get_options() if self.options.subtract_blank: if self.options.blank_fn in self.selection_page.spectra_db: if ask_yesno(title=self.blank_msg, parent=self) != gtk.RESPONSE_YES: self.set_current_page(2) return # Process spectra self.spc_list = self.selection_page.get_ordered_data() process_form = ProcessForm() processor = JwsProcessor(process_form) results = processor.process_files(options=self.options, spectra_list=self.spc_list) if results: (self.processed_files, self.processed_list, self.success_count) = results else: self.success_count = 0 # Show the results in self.summary_page info_buffer = processor.report_buffer process_form.destroy() if self.success_count > 0: mensaje = _('Successfully processed files: %(#)d out of %(##)d.') \ % {'#': self.success_count, '##':len(self.spc_list)} image_type = gtk.STOCK_DIALOG_INFO else: mensaje = _("Spectra could not be processed!") image_type = gtk.STOCK_DIALOG_ERROR self.__no_files_processed = True self.summary_page.set_message(mensaje, info_buffer, image_type) self.set_page_complete(self.summary_page, True) #elif page == self.final_page: elif page == self.save_options_page: # Save files print self.save_options_page.get_option() #debug save_option = self.save_options_page.get_option() column_headers_option = self.save_options_page.get_column_headers_option( ) if save_option != self.save_options_page.SO_DONT_SAVE: files_saved = self._save_files(save_option, column_headers_option, self.processed_list, self.processed_files, self.success_count) print "Files saved = ", files_saved #debug if files_saved is None: self.set_current_page(4) else: msg = _("Successfully saved files: %(#)d out of %(##)d") % \ {'#':files_saved, '##':len(self.processed_list)} self.final_page.set_text(msg) else: self.final_page.set_text(_("Results have not been saved."))