From d6a986864004966d8a478d3f8673e59f79490c5f Mon Sep 17 00:00:00 2001 From: WorldTeacher <41587052+WorldTeacher@users.noreply.github.com> Date: Thu, 22 Feb 2024 21:20:57 +0100 Subject: [PATCH] EXPERIMENTAL: switch from PyQt6 to PySide6 --- .trunk/trunk.yaml | 8 +- src/logic/threads.py | 58 +-- src/logic/userInterface.py | 331 +++++++++++------- src/ui/Ui_plotdata.py | 4 +- src/ui/Ui_semesterapparat_ui.py | 4 +- src/ui/Ui_setupwizard.py | 4 +- src/ui/dialogs/Ui_edit_bookdata.py | 4 +- src/ui/dialogs/Ui_fileparser.py | 6 +- src/ui/dialogs/Ui_login.py | 4 +- src/ui/dialogs/Ui_mail_preview.py | 4 +- src/ui/dialogs/Ui_medianadder.py | 4 +- src/ui/dialogs/Ui_new_subject.py | 4 +- src/ui/dialogs/Ui_parsed_titles.py | 4 +- src/ui/dialogs/Ui_reminder.py | 4 +- src/ui/dialogs/Ui_settings.py | 4 +- src/ui/dialogs/app_ext.py | 4 +- src/ui/dialogs/ext_app.py | 4 +- src/ui/dialogs/mail.py | 2 +- src/ui/dialogs/mail_preview.py | 4 +- src/ui/dialogs/medienadder.py | 2 +- src/ui/dialogs/new_subject_ui.py | 4 +- src/ui/dialogs/parsed_titles_ui.py | 4 +- src/ui/dialogs/popup_confirm.py | 4 +- src/ui/dialogs/settings.py | 2 +- src/ui/mainwindow.py | 4 +- src/ui/plotdata_ui.py | 4 +- src/ui/sap.py | 4 +- src/ui/sounds/semesterapparat_ui_ui.py | 4 +- src/ui/widgets/Ui_message_widget.py | 4 +- src/ui/widgets/Ui_progress_overview_widget.py | 4 +- src/ui/widgets/collapse.py | 6 +- src/ui/widgets/default_apps.py | 6 +- src/ui/widgets/filepicker.py | 4 +- src/ui/widgets/graph.py | 2 +- src/ui/widgets/progress_widget.py | 2 +- src/ui/widgets/webview_ui.py | 4 +- src/utils/documentationview.py | 27 +- 37 files changed, 326 insertions(+), 226 deletions(-) diff --git a/.trunk/trunk.yaml b/.trunk/trunk.yaml index 05fcfa9..5d2080f 100644 --- a/.trunk/trunk.yaml +++ b/.trunk/trunk.yaml @@ -2,11 +2,11 @@ # To learn more about the format of this file, see https://docs.trunk.io/reference/trunk-yaml version: 0.1 cli: - version: 1.19.0 + version: 1.20.0 plugins: sources: - id: trunk - ref: v1.4.2 + ref: v1.4.3 uri: https://github.com/trunk-io/plugins runtimes: enabled: @@ -29,10 +29,10 @@ lint: - sql-formatter@15.2.0 - sqlfluff@2.3.5 - isort@5.13.2 - - ruff@0.2.1 + - ruff@0.2.2 - bandit@1.7.7 - markdownlint@0.39.0 - - yamllint@1.34.0 + - yamllint@1.35.1 - black@24.2.0 actions: disabled: diff --git a/src/logic/threads.py b/src/logic/threads.py index f1b82d3..50204f8 100644 --- a/src/logic/threads.py +++ b/src/logic/threads.py @@ -1,21 +1,23 @@ +import sqlite3 import threading import time -from PyQt6.QtCore import QThread, pyqtSignal +from icecream import ic +from PySide6.QtCore import QThread, Signal from src.backend.database import Database from src.logic.log import MyLogger -from src.transformers import RDS_AVAIL_DATA from src.logic.webrequest import BibTextTransformer, WebRequest -import sqlite3 -from icecream import ic +from src.transformers import RDS_AVAIL_DATA + class BookGrabber(QThread): - updateSignal = pyqtSignal(int, int) - done = pyqtSignal() - def __init__(self,app_id, prof_id, mode, data, parent=None): - super(BookGrabber, self).__init__(parent = None) - self.is_Running = True + updateSignal = Signal(int, int) + done = Signal() + + def __init__(self, app_id, prof_id, mode, data, parent=None): + super(BookGrabber, self).__init__(parent=None) + self.is_Running = True self.logger = MyLogger("Worker") self.logger.log_info("Starting worker thread") self.data = data @@ -26,16 +28,14 @@ class BookGrabber(QThread): self.state = (self.app_id, self.prof_id, self.mode, self.data) ic(self.state) time.sleep(2) - - - + # def resetValues(self): # self.app_id = None # self.prof_id = None # self.mode = None # self.data = None # self.book_id = None - + def run(self): while self.is_Running: self.db = Database() @@ -64,7 +64,7 @@ class BookGrabber(QThread): for rds_item in rds.items: sign = rds_item.superlocation loc = rds_item.location - ic(sign,loc) + ic(sign, loc) ic(rds_item) if self.app_id in sign or self.app_id in loc: state = 1 @@ -94,13 +94,15 @@ class BookGrabber(QThread): self.stop() if not self.is_Running: break + def stop(self): self.is_Running = False - + class AvailChecker(QThread): - updateSignal = pyqtSignal(str, int) - updateProgress = pyqtSignal(int,int) + updateSignal = Signal(str, int) + updateProgress = Signal(int, int) + def __init__( self, links: list = None, appnumber: int = None, parent=None, books=list[dict] ): @@ -119,8 +121,11 @@ class AvailChecker(QThread): self.links = links self.appnumber = appnumber self.books = books - self.logger.log_info(f"Started worker with appnumber: {self.appnumber} and links: {self.links} and {len(self.books)} books...") + self.logger.log_info( + f"Started worker with appnumber: {self.appnumber} and links: {self.links} and {len(self.books)} books..." + ) time.sleep(2) + def run(self): self.db = Database() state = 0 @@ -144,12 +149,7 @@ class AvailChecker(QThread): book_id = book["id"] break self.logger.log_info(f"State of {link}: " + str(state)) - print( - "Updating availability of " - + str(book_id) - + " to " - + str(state) - ) + print("Updating availability of " + str(book_id) + " to " + str(state)) self.db.setAvailability(book_id, state) count += 1 self.updateProgress.emit(count, len(self.links)) @@ -162,10 +162,10 @@ class AvailChecker(QThread): class AutoAdder(QThread): - updateSignal = pyqtSignal(int) + updateSignal = Signal(int) - setTextSignal = pyqtSignal(int) - progress = pyqtSignal(int) + setTextSignal = Signal(int) + progress = Signal(int) def __init__(self, data=None, app_id=None, prof_id=None, parent=None): super().__init__(parent) @@ -206,10 +206,13 @@ class AutoAdder(QThread): # teminate thread self.finished.emit() + class BackgroundChecker(QThread): """Check all apparats for available Books""" + pass + class MockAvailCheck: def __init__( @@ -263,7 +266,6 @@ class MockAvailCheck: result.append((item.callnumber, state)) count += 1 return result - self.logger.log_info("Worker thread finished") # teminate thread diff --git a/src/logic/userInterface.py b/src/logic/userInterface.py index 66b2ec2..d1db546 100644 --- a/src/logic/userInterface.py +++ b/src/logic/userInterface.py @@ -6,19 +6,30 @@ import os import sys import tempfile import time -from pathlib import Path import webbrowser +from pathlib import Path + +from icecream import ic from natsort import natsorted from omegaconf import OmegaConf -from PyQt6 import QtCore, QtGui, QtWidgets -from PyQt6.QtCore import QDate, QThread, pyqtSignal -from PyQt6.QtGui import QColor, QRegularExpressionValidator -from src.logic import c_sort +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtCore import QDate, QThread, Signal +from PySide6.QtGui import QColor, QRegularExpressionValidator + +# from src.logic.webrequest import BibTextTransformer, WebRequest +# from src.utils import documentationview +from src.backend.admin_console import AdminCommands +from src.backend.create_file import recreateFile from src.backend.database import Database +from src.backend.delete_temp_contents import delete_temp_contents +from src.backend.semester import generateSemesterByDate +from src.logic import c_sort from src.logic.constants import APP_NRS, PROF_TITLES -from src.logic.dataclass import ApparatData, BookData, MailData,Subjects +from src.logic.csvparser import csv_to_list +from src.logic.dataclass import ApparatData, BookData, MailData, Subjects from src.logic.log import MyLogger -from src.logic.threads import BookGrabber,AvailChecker +from src.logic.threads import AvailChecker, BookGrabber +from src.logic.wordparser import word_docx_to_csv from src.ui import ( App_Ext_Dialog, FilePicker, @@ -34,15 +45,7 @@ from src.ui import ( reminder_ui, settings_ui, ) -# from src.logic.webrequest import BibTextTransformer, WebRequest -from src.utils import documentationview -from src.backend.admin_console import AdminCommands -from src.backend.semester import generateSemesterByDate -from src.backend.create_file import recreateFile -from src.backend.delete_temp_contents import delete_temp_contents -from src.logic.csvparser import csv_to_list -from src.logic.wordparser import word_docx_to_csv -from icecream import ic + config = OmegaConf.load("config.yaml") @@ -70,6 +73,7 @@ class Medien(medienadder_ui): # self.btn_save_path_select.clicked.connect(self.select_save_path) # # self.setWindowIcon(QtGui.QIcon("ui\icon.png")) + # def select_save_path(self) -> None: # # open a dialog to select a save path # dialog = QtWidgets.QFileDialog() @@ -80,15 +84,16 @@ class Medien(medienadder_ui): # self.save_path.setText(self.settings.save_path) # self.settings.save_settings() class MyComboBox(QtWidgets.QComboBox): - + def __init__(self, parent=None): super().__init__(parent) + valid_input = (0, 0, 0, 0, 0, 0) class MessageCalendar(QtWidgets.QCalendarWidget): - #Widget for MessageCalendar + # Widget for MessageCalendar def __init__(self, parent=None): super().__init__(parent) self.messages = {} # Dictionary to store dates with messages @@ -168,9 +173,9 @@ class Ui(Ui_Semesterapparat): self.tableWidget_apparate.setSortingEnabled(True) # self.tableWidget_apparate.text self.actionEinstellungen.triggered.connect(self.open_settings) - #if help>documentation is clicked, open the documentation or shortcut is pressed + # if help>documentation is clicked, open the documentation or shortcut is pressed self.actionDokumentation.triggered.connect(self.open_documentation) - + # set validators self.sem_year.setText(str(QtCore.QDate.currentDate().year())) self.prof_mail.setValidator( @@ -275,7 +280,7 @@ class Ui(Ui_Semesterapparat): for apparat in self.apparats: self.insert_apparat_into_table(apparat) - self.old_apparats = self.apparats #create a clone to compare against later + self.old_apparats = self.apparats # create a clone to compare against later # if length of apparats changes, update box_apparats # if tab is changed, gather data needed self.tabWidget.currentChanged.connect(self.tab_changed) @@ -289,9 +294,11 @@ class Ui(Ui_Semesterapparat): # TODO:admin - change faculty self.select_action_box.addItem("") self.select_action_box.setCurrentText("") - self.hide_all() + self.hide_all() self.select_action_box.currentTextChanged.connect(self.admin_action_changed) - self.edit_faculty_member_select_member.currentTextChanged.connect(self.edit_faculty_member_set_data) + self.edit_faculty_member_select_member.currentTextChanged.connect( + self.edit_faculty_member_set_data + ) self.book_search.clicked.connect(self.search_book) # enable click functionality for the combobox to allow selection of roles @@ -301,6 +308,7 @@ class Ui(Ui_Semesterapparat): self.pushButton.clicked.connect(self.delete_user) self.update_user.clicked.connect(self.update_user_data) self.update_faculty_member.clicked.connect(self.edit_faculty_member_action) + def populate_appfach_dropdown(self): self.app_fach.clear() self.app_fach.addItem("") @@ -308,8 +316,10 @@ class Ui(Ui_Semesterapparat): self.app_fach.addItems([subject[1] for subject in self.db.getSubjects()]) def open_documentation(self): - documentation = documentationview.DocumentationViewer() - documentation.show() + # open the documentation in the default browser + webbrowser.open("file:///" + os.path.abspath("docs/index.html")) + # documentation = documentationview.DocumentationViewer() + # documentation.show() def tabW1_changed(self): if self.tabWidget.currentIndex() == 1: @@ -323,7 +333,7 @@ class Ui(Ui_Semesterapparat): title = self.search_by_title.text() params = { "signature": signature if signature != "" else None, - "title": title if title != "" else None + "title": title if title != "" else None, } params = {key: value for key, value in params.items() if value is not None} ic(params) @@ -333,16 +343,24 @@ class Ui(Ui_Semesterapparat): for book in retdata: self.book_search_result.insertRow(0) - self.book_search_result.setItem(0,0,QtWidgets.QTableWidgetItem(book[0].title)) - self.book_search_result.setItem(0,1,QtWidgets.QTableWidgetItem(book[0].signature)) + self.book_search_result.setItem( + 0, 0, QtWidgets.QTableWidgetItem(book[0].title) + ) + self.book_search_result.setItem( + 0, 1, QtWidgets.QTableWidgetItem(book[0].signature) + ) print(book[1]) - self.book_search_result.setItem(0,2,QtWidgets.QTableWidgetItem(self.db.getApparatName(book[1],book[2]))) + self.book_search_result.setItem( + 0, + 2, + QtWidgets.QTableWidgetItem(self.db.getApparatName(book[1], book[2])), + ) def edit_faculty_member_set_data(self): # get the selected member name = self.edit_faculty_member_select_member.currentText() - fullname = name.replace(",","") - print(fullname,name) + fullname = name.replace(",", "") + print(fullname, name) # get the data for the selected member data = self.db.getProfByName(fullname) # set the data @@ -356,7 +374,11 @@ class Ui(Ui_Semesterapparat): self.edit_faculty_member_title.setText(data[1]) self.faculty_member_old_telnr.setText(data[6]) self.faculty_member_oldmail.setText(data[5]) - self.edit_faculty_member_title.setText(data[1]) if data[1] != None else self.edit_faculty_member_title.setText("") + ( + self.edit_faculty_member_title.setText(data[1]) + if data[1] != None + else self.edit_faculty_member_title.setText("") + ) # self.edit_faculty_member_name.setText(f"{data[3]} {data[2]}") # self.edit_faculty_member_title.setCurrentText(data[1]) @@ -374,7 +396,12 @@ class Ui(Ui_Semesterapparat): # self.user_create_frame_error.setText("Der Nutzername ist bereits vergeben")#TODO: implement error message return userdata = AdminCommands().create_password(password) - self.db.createUser(username=username, password=f"{userdata[1]}{userdata[0]}", salt=userdata[1], role=role) + self.db.createUser( + username=username, + password=f"{userdata[1]}{userdata[0]}", + salt=userdata[1], + role=role, + ) self.user_create_frame_username.clear() self.user_create_frame_password.clear() self.user_frame_userrole.setCurrentText("") @@ -384,7 +411,9 @@ class Ui(Ui_Semesterapparat): if self.user_delete_confirm.isChecked(): username = self.user_delete_frame_user_select.currentText() self.db.deleteUser(username) - self.user_delete_frame_user_select.removeItem(self.user_delete_frame_user_select.currentIndex()) + self.user_delete_frame_user_select.removeItem( + self.user_delete_frame_user_select.currentIndex() + ) self.user_delete_confirm.setChecked(False) else: # self.user_delete_err_message.setText("Bitte bestätigen Sie die Löschung des Nutzers") # TODO: implement error message @@ -392,61 +421,88 @@ class Ui(Ui_Semesterapparat): def update_user_data(self): username = self.user_edit_frame_user_select.currentText() - password = self.user_edit_frame_new_password.text() if self.user_edit_frame_new_password.text() != "" else None - role = self.user_edit_frame_role_select.currentText() if self.user_edit_frame_role_select.currentText() != "" else None + password = ( + self.user_edit_frame_new_password.text() + if self.user_edit_frame_new_password.text() != "" + else None + ) + role = ( + self.user_edit_frame_role_select.currentText() + if self.user_edit_frame_role_select.currentText() != "" + else None + ) userdata = AdminCommands().create_password(password) data = { "password": f"{userdata[1]}{userdata[0]}", "salt": userdata[1], - "role": role + "role": role, } data = {key: value for key, value in data.items() if value is not None} print(data) - self.db.updateUser(username=username,data = data) + self.db.updateUser(username=username, data=data) self.user_edit_frame_user_select.setCurrentText("") self.user_edit_frame_new_password.clear() self.user_edit_frame_role_select.setCurrentText("") def edit_faculty_member_action(self): - def __gen_fullname(fname,lname,data): + def __gen_fullname(fname, lname, data): if fname == "" and lname == "": return data[3] - if fname == ""and lname != "": + if fname == "" and lname != "": return f"{lname} {data[1]}" if fname != "" and lname == "": return f"{data[2]} {fname}" if fname != "" and lname != "": return f"{lname} {fname}" + # get the data and use new value if it is not none and does not mach the old value - if self.edit_faculty_member_select_member.currentText() =="": + if self.edit_faculty_member_select_member.currentText() == "": return - olddata = self.db.getFacultyMember(self.edit_faculty_member_select_member.currentText()) + olddata = self.db.getFacultyMember( + self.edit_faculty_member_select_member.currentText() + ) data = olddata[0] oldlname = data[2] oldfname = data[1] # take data except first and last entry - titel = self.edit_faculty_member_new_title.currentText() if self.edit_faculty_member_new_title.currentText() != "Kein Titel" else None - fname = self.edit_faculty_member_new_surname.text() if self.edit_faculty_member_new_surname.text() != "" else self.edit_faculty_member_select_member.currentText().split(" ")[1].strip() - lname = self.user_faculty_member_new_name.text() if self.user_faculty_member_new_name.text() != "" else self.edit_faculty_member_select_member.currentText().split(" ")[0].strip() - fullname = __gen_fullname(fname,lname,data) + titel = ( + self.edit_faculty_member_new_title.currentText() + if self.edit_faculty_member_new_title.currentText() != "Kein Titel" + else None + ) + fname = ( + self.edit_faculty_member_new_surname.text() + if self.edit_faculty_member_new_surname.text() != "" + else self.edit_faculty_member_select_member.currentText() + .split(" ")[1] + .strip() + ) + lname = ( + self.user_faculty_member_new_name.text() + if self.user_faculty_member_new_name.text() != "" + else self.edit_faculty_member_select_member.currentText() + .split(" ")[0] + .strip() + ) + fullname = __gen_fullname(fname, lname, data) mail = self.user_faculty_member_new_telnr.text() telnr = self.user_faculty_member_new_mail.text() new_data = { - "titel":titel, - "fname":fname, - "lname":lname, - "fullname":fullname, - "mail":mail, - "telnr":telnr, + "titel": titel, + "fname": fname, + "lname": lname, + "fullname": fullname, + "mail": mail, + "telnr": telnr, } new_data = {key: value for key, value in new_data.items() if value != ""} - self.db.updateFacultyMember(data = new_data,oldlname=oldlname,oldfname=oldfname) + self.db.updateFacultyMember(data=new_data, oldlname=oldlname, oldfname=oldfname) self.add_faculty_member_data() self.edit_faculty_member_new_title.setCurrentText("") - self.edit_faculty_member_new_surname.clear() + self.edit_faculty_member_new_surname.clear() self.user_faculty_member_new_name.clear() self.user_faculty_member_new_telnr.clear() self.user_faculty_member_new_mail.clear() @@ -465,7 +521,7 @@ class Ui(Ui_Semesterapparat): roles = list(dict.fromkeys(roles)) users = self.db.getUsers() users = [user[2] for user in users] - users.remove(self.active_user) + users.remove(self.active_user) if "admin" in users: users.remove("admin") if action == "Nutzer anlegen": @@ -498,7 +554,7 @@ class Ui(Ui_Semesterapparat): faculty_members = self.db.getFacultyMembers() names = [f"{member[5]}" for member in faculty_members] self.edit_faculty_member_select_member.clear() - self.edit_faculty_member_select_member.addItems(names) + self.edit_faculty_member_select_member.addItems(names) self.edit_faculty_member_select_member.addItem("") self.edit_faculty_member_select_member.setCurrentText("") @@ -561,7 +617,7 @@ class Ui(Ui_Semesterapparat): created_status.person_double_clicked.connect(self.open_apparat) deleted_status.person_double_clicked.connect(self.open_apparat) - def open_apparat(self, header:str, apparat:str, parent_depth:int): + def open_apparat(self, header: str, apparat: str, parent_depth: int): print(header) if header == "deleted" and parent_depth == 2: # TODO: warn message here @@ -577,11 +633,9 @@ class Ui(Ui_Semesterapparat): # set the items 0 = clickable checkbox, 1 = appname, 2 = profname, 3 = fach # insert new row self.tableWidget.insertRow(0) - self.tableWidget.setItem(0,0, QtWidgets.QTableWidgetItem("")) + self.tableWidget.setItem(0, 0, QtWidgets.QTableWidgetItem("")) self.tableWidget.setItem(0, 1, QtWidgets.QTableWidgetItem(app[1])) - self.tableWidget.setItem( - 0, 2, QtWidgets.QTableWidgetItem(str(app[4])) - ) + self.tableWidget.setItem(0, 2, QtWidgets.QTableWidgetItem(str(app[4]))) self.tableWidget.setItem(0, 3, QtWidgets.QTableWidgetItem(app[2])) self.tableWidget.setItem(0, 4, QtWidgets.QTableWidgetItem(app[3])) # replace the 0 with a checkbox @@ -591,7 +645,9 @@ class Ui(Ui_Semesterapparat): # if i[9] is 1, set the background of the row to red if int(app[9]) == 1: for j in range(5): - self.tableWidget.item(0, j).setBackground(QtGui.QColor(235, 74, 71)) + self.tableWidget.item(0, j).setBackground( + QtGui.QColor(235, 74, 71) + ) # disable the checkbox self.tableWidget.cellWidget(0, 0).setEnabled(False) # set the tooltip @@ -654,9 +710,7 @@ class Ui(Ui_Semesterapparat): apparats = [str(apparat) for apparat in apparats] self.box_appnrs.addItems(apparats) persons = self.db.getProfs() - self.box_person.addItems( - [f"{person[3]}, {person[2]}" for person in persons] - ) + self.box_person.addItems([f"{person[3]}, {person[2]}" for person in persons]) self.box_fach.addItems(subject[1] for subject in self.db.getSubjects()) semester = self.db.getSemersters() self.box_erstellsemester.addItems(semester) @@ -669,9 +723,7 @@ class Ui(Ui_Semesterapparat): self.tabWidget_3.removeTab(1) self.statistics_table.setRowCount(len(data)) for i in range(len(data)): - self.statistics_table.setItem( - i, 0, QtWidgets.QTableWidgetItem(data[i][0]) - ) + self.statistics_table.setItem(i, 0, QtWidgets.QTableWidgetItem(data[i][0])) self.statistics_table.setItem( i, 1, QtWidgets.QTableWidgetItem(str(data[i][1])) ) @@ -695,11 +747,11 @@ class Ui(Ui_Semesterapparat): def tab_changed(self): curr_tab = self.tabWidget.currentIndex() - if curr_tab == 0: # create tab + if curr_tab == 0: # create tab return - elif curr_tab == 1: # statistics tab + elif curr_tab == 1: # statistics tab self.populate_tab() - elif curr_tab == 2: #admin tab + elif curr_tab == 2: # admin tab self.populate_admin_tab() def populate_admin_tab(self): @@ -730,33 +782,47 @@ class Ui(Ui_Semesterapparat): self.db_err_message.setText("") self.btn_del_select_apparats.setEnabled(True) params = { - "appnr": self.box_appnrs.currentText() - if self.box_appnrs.currentText() != "" - else None, - "prof_id": self.db.getProfId(self.box_person.currentText()) - if self.box_person.currentText() != "" - else None, - "fach": self.box_fach.currentText() - if self.box_fach.currentText() != "" - else None, - "erstellsemester": self.box_erstellsemester.currentText() - if self.box_erstellsemester.currentText() != "" - else None, - "dauer": "1" - if self.box_dauerapp.currentText() == "Ja" - else "0" - if self.box_dauerapp.currentText() == "Nein" - else None, - "endsemester": self.box_semester.currentText() - if self.box_semester.currentText() != "" - else None, + "appnr": ( + self.box_appnrs.currentText() + if self.box_appnrs.currentText() != "" + else None + ), + "prof_id": ( + self.db.getProfId(self.box_person.currentText()) + if self.box_person.currentText() != "" + else None + ), + "fach": ( + self.box_fach.currentText() + if self.box_fach.currentText() != "" + else None + ), + "erstellsemester": ( + self.box_erstellsemester.currentText() + if self.box_erstellsemester.currentText() != "" + else None + ), + "dauer": ( + "1" + if self.box_dauerapp.currentText() == "Ja" + else "0" if self.box_dauerapp.currentText() == "Nein" else None + ), + "endsemester": ( + self.box_semester.currentText() + if self.box_semester.currentText() != "" + else None + ), "deletable": "True" if self.check_deletable.isChecked() else None, "deletesemester": self.generateSemester(today=True), } - params = {key: value for key, value in params.items() if value is not None} #remove empty lines to prevent errors + params = { + key: value for key, value in params.items() if value is not None + } # remove empty lines to prevent errors + print(params) + params = { + key: value for key, value in params.items() if value != "Alle" + } # remove empty lines to prevent errors print(params) - params = {key: value for key, value in params.items() if value != "Alle"} #remove empty lines to prevent errors - print(params) result = self.db.statistic_request(**params) # add QTableWidgetItems to the table self.tableWidget.setRowCount(len(result)) @@ -1011,17 +1077,20 @@ class Ui(Ui_Semesterapparat): def get_index_of_value(self, table_widget, value): for i in range(table_widget.rowCount()): for j in range(table_widget.columnCount()): - if table_widget.item(i, j) is not None and table_widget.item(i, j).text() == value: + if ( + table_widget.item(i, j) is not None + and table_widget.item(i, j).text() == value + ): return i, j return None - def load_app_data(self,app_id=None): + def load_app_data(self, app_id=None): print(type(app_id)) if isinstance(app_id, str): # double click the tableWidget_apparate row with the given app_id - row,column = self.get_index_of_value(self.tableWidget_apparate,app_id) + row, column = self.get_index_of_value(self.tableWidget_apparate, app_id) # set the current index to the row - self.tableWidget_apparate.setCurrentCell(row,0) + self.tableWidget_apparate.setCurrentCell(row, 0) app_pos = self.tableWidget_apparate.currentIndex() appnr = self.tableWidget_apparate.item(app_pos.row(), 0).text() appname = self.tableWidget_apparate.item(app_pos.row(), 1).text() @@ -1170,12 +1239,15 @@ class Ui(Ui_Semesterapparat): def check_availability(self): self.threadeds.clear() + def _update_progress(current, all_titles): - self.avail_status.setText( "{}/{}".format(current, all_titles)) + self.avail_status.setText("{}/{}".format(current, all_titles)) + def _hide_progress_label(): self.label_20.hide() self.avail_status.hide() self.avail_status.setText("0/0") + # get all links from the table # if no index in tableWidget_apparat_media is selected, check all if self.tableWidget_apparat_media.currentRow() == -1: @@ -1307,6 +1379,7 @@ class Ui(Ui_Semesterapparat): link = "https://" + link webbrowser.open(link) + # get the name of the column columnname = self.tableWidget_apparat_media.horizontalHeaderItem( item.column() @@ -1366,7 +1439,7 @@ class Ui(Ui_Semesterapparat): return if not _selected_doc_location == "Database": path = Path(_selected_doc_location) - path:Path = path + "/" + _selected_doc_name + path: Path = path + "/" + _selected_doc_name if os.getenv("OS") == "Windows_NT": path = path.resolve() os.startfile(path) @@ -1374,7 +1447,9 @@ class Ui(Ui_Semesterapparat): path = path.resolve() os.system(f"open {path}") else: - recreateFile(_selected_doc_name,self.active_apparat ,filetype=_selected_doc_filetype) + recreateFile( + _selected_doc_name, self.active_apparat, filetype=_selected_doc_filetype + ) # # if ~ in path, replace it with the home directory # if "~" in path: # path = path.replace("~", str(Path.home())) @@ -1508,7 +1583,7 @@ class Ui(Ui_Semesterapparat): self.dokument_list.currentRow(), 0 ).text() if file_location == "Database": - file = recreateFile(file_name,app_id,file_type,open=False) + file = recreateFile(file_name, app_id, file_type, open=False) else: self.add_files() if file_type == "pdf": @@ -1529,7 +1604,9 @@ class Ui(Ui_Semesterapparat): signatures = [i for i in signatures if i != ""] ic(signatures) print("starting thread") - grabber = BookGrabber(mode = "ARRAY", app_id = app_id,prof_id = prof_id,data = signatures) + grabber = BookGrabber( + mode="ARRAY", app_id=app_id, prof_id=prof_id, data=signatures + ) # grabber.mode = "ARRAY" # grabber.data = signatures # grabber.app_id = app_id @@ -1587,9 +1664,7 @@ class Ui(Ui_Semesterapparat): appd = ApparatData() appd.appnr = self.active_apparat appd.prof_title = ( - None - if self.prof_title.text() == "" - else self.prof_title.text() + None if self.prof_title.text() == "" else self.prof_title.text() ) appd.profname = self.drpdwn_prof_name.currentText() appd.appname = self.app_name.text() @@ -1620,9 +1695,10 @@ class Ui(Ui_Semesterapparat): __clear_fields() if self.check_send_mail.isChecked(): self.contact_prof() - + def send_mail_preview(self): pass + @property def active_apparat(self): return self.drpdwn_app_nr.currentText() @@ -1635,11 +1711,15 @@ class Ui(Ui_Semesterapparat): "name": self.dokument_list.item(i, 0).text(), "type": self.dokument_list.item(i, 1).text(), "date": self.dokument_list.item(i, 2).text(), - "path": self.dokument_list.item(i, 3).text(), + "path": self.dokument_list.item(i, 3).text(), } ) self.dokument_list.item(i, 2).setText("") - self.db.insertFile(files, self.active_apparat, self.db.getProfId(self.drpdwn_prof_name.currentText())) + self.db.insertFile( + files, + self.active_apparat, + self.db.getProfId(self.drpdwn_prof_name.currentText()), + ) def update_apparat_list(self): # get a list of new apparats based on self.apparats and self.old_apparats @@ -1656,6 +1736,7 @@ class Ui(Ui_Semesterapparat): def insert_apparat_into_table(self, apparat): ic(apparat) + def __dauer_check(apparat): return "Ja" if apparat[7] == 1 else "Nein" @@ -1688,7 +1769,6 @@ class Ui(Ui_Semesterapparat): ) self.logger.log_info(f"Inserted apparat {apparat[4]}") - def open_context_menu(self, position): menu = QtWidgets.QMenu() extend_action = menu.addAction("Verlängern") @@ -1741,9 +1821,7 @@ class Ui(Ui_Semesterapparat): self.message_box.setText(message["message"]) appnr = message["appnr"] appnr = "/" if appnr is None else str(appnr) - self.line_app_info.setText( - appnr - ) + self.line_app_info.setText(appnr) def __delete_message(): message = messages[self.spin_select_message.value() - 1] @@ -1753,7 +1831,6 @@ class Ui(Ui_Semesterapparat): self.spin_select_message.setMaximum(len(messages)) self.spin_select_message.setValue(1) self.label_total_day_messages.setText("/ " + str(len(messages))) - selected_date = self.calendarWidget.selectedDate().toString("yyyy-MM-dd") print(selected_date) @@ -1767,9 +1844,11 @@ class Ui(Ui_Semesterapparat): self.message_frame.show() self.label_total_day_messages.setText("/ " + str(message_count)) # if there is only one message, disable the spinbox - self.spin_select_message.setEnabled( - False - ) if message_count == 1 else self.spin_select_message.setEnabled(True) + ( + self.spin_select_message.setEnabled(False) + if message_count == 1 + else self.spin_select_message.setEnabled(True) + ) self.spin_select_message.setValue(1) # load the first message __update_message() @@ -1819,7 +1898,11 @@ class Ui(Ui_Semesterapparat): signature=book, prof_id=self.db.getProfId(self.drpdwn_prof_name.currentText()), ) - book_id = self.db.getBookIdBasedOnSignature(self.active_apparat,self.db.getProfId(self.drpdwn_prof_name.currentText()),book) + book_id = self.db.getBookIdBasedOnSignature( + self.active_apparat, + self.db.getProfId(self.drpdwn_prof_name.currentText()), + book, + ) widget = QtWidgets.QDialog() bookedit = edit_bookdata_ui() bookedit.setupUi(widget) @@ -1880,6 +1963,7 @@ class Ui(Ui_Semesterapparat): ) self.db.deleteBook(book_id) self.update_app_media_list() + def extend_apparat(self): framework = QtWidgets.QDialog() frame = App_Ext_Dialog() @@ -1937,7 +2021,12 @@ class Ui(Ui_Semesterapparat): "general": general_data, } - mail_prev = Mail_Dialog(app_id = self.active_apparat,data = pass_data,app_name = self.app_name.text(),app_subject = self.app_fach.currentText()) + mail_prev = Mail_Dialog( + app_id=self.active_apparat, + data=pass_data, + app_name=self.app_name.text(), + app_subject=self.app_fach.currentText(), + ) mail_prev.setupUi(dialog) mail_prev.comboBox.addItems(mail_prevs) mail_prev.set_mail() @@ -1951,9 +2040,7 @@ class Ui(Ui_Semesterapparat): state = self.confirm_popup(message) print(state) if state == 1: - self.db.deleteApparat( - selected_apparat_id, generateSemesterByDate() - ) + self.db.deleteApparat(selected_apparat_id, generateSemesterByDate()) # delete the corresponding entry from self.apparats for apparat in self.apparats: if apparat[4] == int(selected_apparat_id): diff --git a/src/ui/Ui_plotdata.py b/src/ui/Ui_plotdata.py index e0ee261..3d8667e 100644 --- a/src/ui/Ui_plotdata.py +++ b/src/ui/Ui_plotdata.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\plotdata.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/Ui_semesterapparat_ui.py b/src/ui/Ui_semesterapparat_ui.py index 12e9684..de759f0 100644 --- a/src/ui/Ui_semesterapparat_ui.py +++ b/src/ui/Ui_semesterapparat_ui.py @@ -2,13 +2,13 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/SemesterapparatsManager/src/ui/semesterapparat_ui.ui' # -# Created by: PyQt6 UI code generator 5.15.10 +# Created by: PySide6 UI code generator 5.15.10 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/Ui_setupwizard.py b/src/ui/Ui_setupwizard.py index c12fc49..8acfea1 100644 --- a/src/ui/Ui_setupwizard.py +++ b/src/ui/Ui_setupwizard.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\setupwizard.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Wizard(object): diff --git a/src/ui/dialogs/Ui_edit_bookdata.py b/src/ui/dialogs/Ui_edit_bookdata.py index 728cd17..eba44e0 100644 --- a/src/ui/dialogs/Ui_edit_bookdata.py +++ b/src/ui/dialogs/Ui_edit_bookdata.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\edit_bookdata.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.logic.dataclass import BookData diff --git a/src/ui/dialogs/Ui_fileparser.py b/src/ui/dialogs/Ui_fileparser.py index 05459bd..da869db 100644 --- a/src/ui/dialogs/Ui_fileparser.py +++ b/src/ui/dialogs/Ui_fileparser.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\fileparser.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.logic.webrequest import BibTextTransformer, WebRequest @@ -61,7 +61,7 @@ class Ui_Dialog(object): self.listWidget.setObjectName("listWidget") self.signatures = [] self.returned = [] - # self.data_gathering_complete = QtCore.pyqtSignal() + # self.data_gathering_complete = QtCore.Signal() self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) diff --git a/src/ui/dialogs/Ui_login.py b/src/ui/dialogs/Ui_login.py index 3e570af..7e807ac 100644 --- a/src/ui/dialogs/Ui_login.py +++ b/src/ui/dialogs/Ui_login.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/dialogs/login.ui' # -# Created by: PyQt6 UI code generator 6.5.3 +# Created by: PySide6 UI code generator 6.5.3 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. @@ -8,7 +8,7 @@ import hashlib -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from src.backend.database import Database from src.backend.admin_console import AdminCommands diff --git a/src/ui/dialogs/Ui_mail_preview.py b/src/ui/dialogs/Ui_mail_preview.py index 4b95e50..32ed57d 100644 --- a/src/ui/dialogs/Ui_mail_preview.py +++ b/src/ui/dialogs/Ui_mail_preview.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\mail_preview.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets import subprocess import tempfile import os diff --git a/src/ui/dialogs/Ui_medianadder.py b/src/ui/dialogs/Ui_medianadder.py index 3578bab..a1c46b0 100644 --- a/src/ui/dialogs/Ui_medianadder.py +++ b/src/ui/dialogs/Ui_medianadder.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\medianadder.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/Ui_new_subject.py b/src/ui/dialogs/Ui_new_subject.py index 213eb1c..db6ebde 100644 --- a/src/ui/dialogs/Ui_new_subject.py +++ b/src/ui/dialogs/Ui_new_subject.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\new_subject.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/Ui_parsed_titles.py b/src/ui/dialogs/Ui_parsed_titles.py index 786c176..b05ad32 100644 --- a/src/ui/dialogs/Ui_parsed_titles.py +++ b/src/ui/dialogs/Ui_parsed_titles.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\parsed_titles.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.logic.log import MyLogger from src.logic.threads import AutoAdder diff --git a/src/ui/dialogs/Ui_reminder.py b/src/ui/dialogs/Ui_reminder.py index f4dbc8f..283e509 100644 --- a/src/ui/dialogs/Ui_reminder.py +++ b/src/ui/dialogs/Ui_reminder.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\reminder.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/Ui_settings.py b/src/ui/dialogs/Ui_settings.py index bc50dfe..36c39f2 100644 --- a/src/ui/dialogs/Ui_settings.py +++ b/src/ui/dialogs/Ui_settings.py @@ -1,13 +1,13 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\settings.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. from omegaconf import OmegaConf -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets config = OmegaConf.load("config.yaml") diff --git a/src/ui/dialogs/app_ext.py b/src/ui/dialogs/app_ext.py index 517db78..f0a1887 100644 --- a/src/ui/dialogs/app_ext.py +++ b/src/ui/dialogs/app_ext.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui\dialogs\apparat_extend.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.backend.semester import generateSemesterByDate class Ui_Dialog(object): diff --git a/src/ui/dialogs/ext_app.py b/src/ui/dialogs/ext_app.py index 5ff330d..425067e 100644 --- a/src/ui/dialogs/ext_app.py +++ b/src/ui/dialogs/ext_app.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui/dialogs/extend_apparat.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Frame(object): diff --git a/src/ui/dialogs/mail.py b/src/ui/dialogs/mail.py index a380f9a..7f96aff 100644 --- a/src/ui/dialogs/mail.py +++ b/src/ui/dialogs/mail.py @@ -1,7 +1,7 @@ import subprocess import tempfile import os -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.ui.dialogs.Ui_mail_preview import Ui_eMailPreview as Ui_Dialog from omegaconf import OmegaConf diff --git a/src/ui/dialogs/mail_preview.py b/src/ui/dialogs/mail_preview.py index c258514..47635ee 100644 --- a/src/ui/dialogs/mail_preview.py +++ b/src/ui/dialogs/mail_preview.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui\dialogs\mail_preview.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/medienadder.py b/src/ui/dialogs/medienadder.py index 31f26cc..b6aff9f 100644 --- a/src/ui/dialogs/medienadder.py +++ b/src/ui/dialogs/medienadder.py @@ -1,4 +1,4 @@ -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from .Ui_medianadder import Ui_Dialog diff --git a/src/ui/dialogs/new_subject_ui.py b/src/ui/dialogs/new_subject_ui.py index bbcc9dd..736e8ae 100644 --- a/src/ui/dialogs/new_subject_ui.py +++ b/src/ui/dialogs/new_subject_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/dialogs/new_subject.ui' # -# Created by: PyQt6 UI code generator 6.5.3 +# Created by: PySide6 UI code generator 6.5.3 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/parsed_titles_ui.py b/src/ui/dialogs/parsed_titles_ui.py index 746f908..78f8684 100644 --- a/src/ui/dialogs/parsed_titles_ui.py +++ b/src/ui/dialogs/parsed_titles_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/dialogs/parsed_titles.ui' # -# Created by: PyQt6 UI code generator 6.5.3 +# Created by: PySide6 UI code generator 6.5.3 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Form(object): diff --git a/src/ui/dialogs/popup_confirm.py b/src/ui/dialogs/popup_confirm.py index a27c0bc..0e80e84 100644 --- a/src/ui/dialogs/popup_confirm.py +++ b/src/ui/dialogs/popup_confirm.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui\dialogs\confirm_extend.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_extend_confirm(object): diff --git a/src/ui/dialogs/settings.py b/src/ui/dialogs/settings.py index 63d7b62..3a28c94 100644 --- a/src/ui/dialogs/settings.py +++ b/src/ui/dialogs/settings.py @@ -1,5 +1,5 @@ from omegaconf import OmegaConf -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src.ui.dialogs.Ui_settings import Ui_Dialog as _settings diff --git a/src/ui/mainwindow.py b/src/ui/mainwindow.py index fb8f979..e6152b0 100644 --- a/src/ui/mainwindow.py +++ b/src/ui/mainwindow.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'untitled.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/plotdata_ui.py b/src/ui/plotdata_ui.py index f0738dc..14144f9 100644 --- a/src/ui/plotdata_ui.py +++ b/src/ui/plotdata_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/plotdata.ui' # -# Created by: PyQt6 UI code generator 6.5.3 +# Created by: PySide6 UI code generator 6.5.3 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/sap.py b/src/ui/sap.py index 8d65970..6732450 100644 --- a/src/ui/sap.py +++ b/src/ui/sap.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui/semesterapparat_ui.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/sounds/semesterapparat_ui_ui.py b/src/ui/sounds/semesterapparat_ui_ui.py index 6b0fafd..da8d74b 100644 --- a/src/ui/sounds/semesterapparat_ui_ui.py +++ b/src/ui/sounds/semesterapparat_ui_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/sounds/semesterapparat_ui.ui' # -# Created by: PyQt6 UI code generator 6.5.3 +# Created by: PySide6 UI code generator 6.5.3 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/widgets/Ui_message_widget.py b/src/ui/widgets/Ui_message_widget.py index c2e9f60..41c7f70 100644 --- a/src/ui/widgets/Ui_message_widget.py +++ b/src/ui/widgets/Ui_message_widget.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\widgets\message_widget.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.backend.database import Database diff --git a/src/ui/widgets/Ui_progress_overview_widget.py b/src/ui/widgets/Ui_progress_overview_widget.py index a146656..5d3fde1 100644 --- a/src/ui/widgets/Ui_progress_overview_widget.py +++ b/src/ui/widgets/Ui_progress_overview_widget.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\widgets\progress_overview_widget.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Form(object): diff --git a/src/ui/widgets/collapse.py b/src/ui/widgets/collapse.py index a5fc084..c02acef 100644 --- a/src/ui/widgets/collapse.py +++ b/src/ui/widgets/collapse.py @@ -1,6 +1,6 @@ # import pysignal pyslot -from PyQt6.QtCore import pyqtSignal -from PyQt6.QtWidgets import ( +from PySide6.QtCore import Signal +from PySide6.QtWidgets import ( QApplication, QTreeWidget, QTreeWidgetItem, @@ -10,7 +10,7 @@ from PyQt6.QtWidgets import ( class StatusWidget(QWidget): - person_double_clicked = pyqtSignal(str,str, int) + person_double_clicked = Signal(str,str, int) def __init__(self, data, header_label: str): super(StatusWidget, self).__init__() diff --git a/src/ui/widgets/default_apps.py b/src/ui/widgets/default_apps.py index b3f3a40..e390968 100644 --- a/src/ui/widgets/default_apps.py +++ b/src/ui/widgets/default_apps.py @@ -1,15 +1,15 @@ -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class CollapsibleWidget(object): pass -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class CollapsibleWidget(object): -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class CollapsibleWidget(object): diff --git a/src/ui/widgets/filepicker.py b/src/ui/widgets/filepicker.py index 7934787..68e65d4 100644 --- a/src/ui/widgets/filepicker.py +++ b/src/ui/widgets/filepicker.py @@ -1,5 +1,5 @@ -from PyQt6.QtWidgets import QFileDialog, QApplication -from PyQt6.QtCore import QSettings +from PySide6.QtWidgets import QFileDialog, QApplication +from PySide6.QtCore import QSettings import sys class FilePicker: diff --git a/src/ui/widgets/graph.py b/src/ui/widgets/graph.py index 5c96025..990bb7a 100644 --- a/src/ui/widgets/graph.py +++ b/src/ui/widgets/graph.py @@ -5,7 +5,7 @@ matplotlib.use("QtAgg") from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolbar from matplotlib.figure import Figure -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class graph(FigureCanvas): diff --git a/src/ui/widgets/progress_widget.py b/src/ui/widgets/progress_widget.py index df14ab8..49b1a7d 100644 --- a/src/ui/widgets/progress_widget.py +++ b/src/ui/widgets/progress_widget.py @@ -1,4 +1,4 @@ -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from Ui_progress_overview_widget import Ui_Form diff --git a/src/ui/widgets/webview_ui.py b/src/ui/widgets/webview_ui.py index 2ef71ca..f56758e 100644 --- a/src/ui/widgets/webview_ui.py +++ b/src/ui/widgets/webview_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/SemesterapparatsManager/src/ui/widgets/webview.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from PySide6 import QtWebEngineWidgets diff --git a/src/utils/documentationview.py b/src/utils/documentationview.py index 19f446d..f5f1d7b 100644 --- a/src/utils/documentationview.py +++ b/src/utils/documentationview.py @@ -1,11 +1,13 @@ -import sys -#from PyQt6 import Webview -from PySide6.QtWebEngineWidgets import QWebEngineView import os -from PySide6.QtWidgets import QTabWidget +import sys + +# from PySide6 import Webview +from PySide6.QtWebEngineWidgets import QWebEngineView +from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget documentation_path = "docs" + class DocumentationViewer(QMainWindow): def __init__(self): super().__init__() @@ -16,22 +18,31 @@ class DocumentationViewer(QMainWindow): self.setCentralWidget(self.tabs) self.set_documentation_tabs() - + def set_documentation_tabs(self): - files = [os.path.join(documentation_path, file) for file in os.listdir(documentation_path) if file.endswith(".html")] + files = [ + os.path.join(documentation_path, file) + for file in os.listdir(documentation_path) + if file.endswith(".html") + ] for file in files: with open(file, "r") as f: html_content = f.read() tab_name = os.path.basename(file).split(".")[0] self.load_documentation(tab_name, html_content) - def load_documentation(self, tab_name="Documentation", html_content="
Your HTML documentation content goes here.
"): + + def load_documentation( + self, + tab_name="Documentation", + html_content="Your HTML documentation content goes here.
", + ): documentation_tab = QWebEngineView() documentation_tab.setHtml(html_content) self.tabs.addTab(documentation_tab, tab_name) + if __name__ == "__main__": app = QApplication(sys.argv) viewer = DocumentationViewer() viewer.show() sys.exit(app.exec()) - \ No newline at end of file