def export(self): directory = self.UI.lineDir.text() print('Should export in : ', directory) # Create progress dialog dialog = ProgressDialog(1, self) dialog.setWindowTitle('Exportation CSV...') class CSVExporter: def __init__(self, dbmanager, directory): self.dbMan = dbmanager self.directory = directory def process(self): print('Exporting in :', self.directory) self.dbMan.export_csv(directory) print('Exporting done!') exporter = CSVExporter(self.dbMan, directory) process = BackgroundProcess([exporter.process]) process.finished.connect(dialog.accept) process.trigger.connect(dialog.trigger) process.start() # Show dialog dialog.exec() # Done self.accept()
def ok_clicked(self): # Do the importation table = self.UI.tableFiles # Create progress dialog dialog = ProgressDialog(table.rowCount(), self) dialog.setWindowTitle('Importation...') class Importer: def __init__(self, filename, importer): self.filename = filename self.importer = importer def process(self): print('Importer loading', self.filename) results = self.importer.load(self.filename) print('Importer saving to db') self.importer.import_to_database(results) if results is not None: results.clear() # Needed to clear the dict cache and let the garbage collector delete it! print('Importer done!') importers = [] for i in range(0, table.rowCount()): part = table.item(i, 1).data(Qt.UserRole) file_type = table.item(i, 2).data(Qt.UserRole) file_name = table.item(i, 3).text() data_importer = None if file_type == ImporterTypes.ACTIGRAPH: data_importer = ActigraphImporter(manager=self.dbMan, participant=part) if file_type == ImporterTypes.WIMU: data_importer = WIMUImporter(manager=self.dbMan, participant=part) if file_type == ImporterTypes.OPENIMU: data_importer = OpenIMUImporter(manager=self.dbMan, participant=part) if file_type == ImporterTypes.APPLEWATCH: data_importer = AppleWatchImporter(manager=self.dbMan, participant=part) if data_importer is not None: importers.append(Importer(file_name, data_importer)) # results = data_importer.load(file_name) # data_importer.import_to_database(results) else: # TODO: Error message self.reject() # Run in background all importers (in sequence) all_functions = [] for importer in importers: all_functions.append(importer.process) process = BackgroundProcess(all_functions) process.finished.connect(dialog.accept) process.trigger.connect(dialog.trigger) process.start() # Show progress dialog dialog.exec() gc.collect() self.accept()
def on_process_button_clicked(self): print('on_process_button_clicked') if self.factory is not None: class Processor: def __init__(self, algo, dbmanager, recordsets): self.algo = algo self.dbMan = dbmanager self.recordsets = recordsets self.results = {} def process(self): print('Processor starting') self.results = algo.calculate(self.dbMan, self.recordsets) print('results:', self.results) print('Processor done!') def get_results(self): print('getting results') return self.results # For testing, should display a configuration GUI first params = {} algo = self.factory.create(params) # Create background process processor = Processor(algo, self.dbMan, self.recordsets) process = BackgroundProcess([processor.process]) # Create progress dialog dialog = ProgressDialog(1, self) dialog.setWindowTitle('Traitement...') process.finished.connect(dialog.accept) process.trigger.connect(dialog.trigger) process.start() dialog.exec() results = processor.get_results() # results = algo.calculate(self.dbMan, self.recordsets) print('Algo results', results) """window = QMainWindow(self) window.setWindowTitle('Results: ' + self.factory.info()['name']) widget = ResultWindow(self) widget.display_freedson_1998(results, self.recordsets) window.setCentralWidget(widget) window.resize(800, 600) window.show()""" # Save to database name = self.factory.info( )['name'] + " - " + self.recordsets[0].name if len(self.recordsets) > 1: name += " @ " + self.recordsets[len(self.recordsets) - 1].name self.processed_data = self.dbMan.add_processed_data( self.factory.info()['unique_id'], name, results, self.recordsets) self.accept()