Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
    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()