Exemplo n.º 1
0
 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            
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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."))
Exemplo n.º 4
0
    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."))