from PyQt6 import QtCore, QtWidgets, QtGui from .sources.Ui_dialog_generateReport import Ui_Dialog from src.utils import Icon from src.utils.reportThread import ReportThread from src.logic import Database import os class ReportUi(QtWidgets.QDialog, Ui_Dialog): def __init__(self, parent=None): super(ReportUi, self).__init__(parent) self.setupUi(self) self.setWindowIcon(Icon("report").icon) self.setWindowTitle("Report erstellen") self.radioButton.hide() self.db = Database() self.reportprogress.hide() # variables self.maxrecords = 0 self.days = 0 self.rthread = ReportThread() # buttons self.generateReport.setEnabled(False) self.generateReport.clicked.connect(self.generate_report) self.radio_year.clicked.connect(self.set_days_by_radio) self.radio_month.clicked.connect(self.set_days_by_radio) self.radio_week.clicked.connect(self.set_days_by_radio) self.format_txt.clicked.connect(lambda: self.rthread.setFormat("txt")) self.format_csv.clicked.connect(lambda: self.rthread.setFormat("tsv")) self.format_csv.clicked.connect(lambda: self.generateReport.setEnabled(True)) self.format_txt.clicked.connect(lambda: self.generateReport.setEnabled(True)) # sliders self.dayslider.valueChanged.connect(self.set_days) self.show() # labels self.label_4.hide() def set_days_by_radio(self): if self.radio_year.isChecked(): self.set_days(365) self.dayslider.setValue(365) elif self.radio_month.isChecked(): self.set_days(30) self.dayslider.setValue(30) elif self.radio_week.isChecked(): self.set_days(7) self.dayslider.setValue(7) def set_days(self, value): # if value is not 7,30,365, deactivate radio buttons if value != 7 and value != 30 and value != 365: self.radioButton.setChecked(True) self.days = value self.dayValue.setText(str(value)) def generate_report(self): self.rthread.setDays(self.days) self.rthread.report_signal.connect(self.report_generated) self.rthread.report_nums_signal.connect(self.show_progress) self.rthread.report_progress_signal.connect(self.update_progress) self.rthread.finished.connect(self.reset) # self.rthread.finished.connect(self.rthread.deleteLater) self.rthread.start() def reset(self): self.days = 0 self.reportprogress.hide() self.reportprogress.setValue(0) self.label_4.setText("Fortschritt:") self.label_4.hide() def update_progress(self, num): self.reportlink.clear() self.reportprogress.setValue(num) self.label_4.setText("Fortschritt: " + str(num) + "/" + str(self.maxrecords)) if num == self.reportprogress.maximum(): self.label_4.setText("Datei wird generiert") def show_progress(self, num): self.reportprogress.show() self.label_4.show() self.maxrecords = num self.reportprogress.setMaximum(self.maxrecords) def report_generated(self): self.reportlink.setOpenExternalLinks(True) fileformat = self.rthread.format #print(fileformat) self.reportlink.setText( f'Report' ) self.reportprogress.hide() def launch(): import sys app = QtWidgets.QApplication(sys.argv) window = ReportUi() sys.exit(app.exec())