migrate from PyQt6 to PySide6, remove unneeded dependencies

This commit is contained in:
2025-06-17 16:21:56 +02:00
parent c3d9daa1b0
commit 7eb55c21d0
101 changed files with 898 additions and 464 deletions

View File

@@ -33,7 +33,6 @@ class Database:
name: str
path: str | Path
temp: str | Path
def getattr(self, name: str):
return getattr(self, name)
@@ -224,6 +223,9 @@ class Config:
def set_zotero_attr(self, name: str, value: Any):
OmegaConf.update(self._config, f"zotero.{name}", value)
def set_openai_attr(self, name: str, value: Any):
OmegaConf.update(self._config, f"openAI.{name}", value)
def set_icon_attr(self, name: str, value: Any):
OmegaConf.update(self._config, f"icons.{name}", value)

View File

@@ -21,8 +21,7 @@ dependencies = [
"openai>=1.79.0",
"pandas>=2.2.3",
"playwright>=1.49.1",
"pyqt6>=6.8.0",
"pyqtgraph>=0.13.7",
"pyside6>=6.9.1",
"python-docx>=1.1.2",
"pyzotero>=1.6.4",
"ratelimit>=2.2.1",
@@ -60,4 +59,4 @@ post_commit_hooks = []
[[tool.bumpversion.files]]
filename = "src/__init__.py"
[[tool.bumpversion.files]]
filename = ".version"
filename = ".version"

View File

@@ -44,6 +44,19 @@ class AdminCommands:
hashed_password = self.hash_password("admin")
self.db.createUser("admin", salt + hashed_password, "admin", salt)
def create_user(self, username: str, password: str, role: str = "user"):
"""Create a new user in the database.
Args:
username (str): the username of the user to be created.
password (str): the password of the user to be created.
role (str, optional): the role of the user to be created. Defaults to "user".
"""
hashed_password, salt = self.create_password(password)
self.db.createUser(
user=username, password=salt + hashed_password, role=role, salt=salt
)
def hash_password(self, password: str) -> str:
"""Hash a password using SHA256.

View File

@@ -74,6 +74,7 @@ class Database:
os.makedirs(path)
if self.get_db_contents() == []:
log.critical("Database does not exist, creating tables")
log.critical(f"Path: {path}")
self.create_tables()
self.insertSubjects()

View File

@@ -1,4 +1,4 @@
from PyQt6.QtCore import QThread
from PySide6.QtCore import QThread
from src.utils.documentation import run_mkdocs

View File

@@ -1,5 +1,5 @@
from PyQt6.QtCore import QThread
from PyQt6.QtCore import pyqtSignal as Signal
from PySide6.QtCore import QThread
from PySide6.QtCore import Signal
from src.backend import Database
from src.logic.webrequest import BibTextTransformer, WebRequest

View File

@@ -1,8 +1,8 @@
import time
# from icecream import ic
from PyQt6.QtCore import QThread
from PyQt6.QtCore import pyqtSignal as Signal
from PySide6.QtCore import QThread
from PySide6.QtCore import Signal as Signal
from src.backend import Database
import loguru

View File

@@ -1,8 +1,8 @@
import time
# from icecream import ic
from PyQt6.QtCore import QThread
from PyQt6.QtCore import pyqtSignal as Signal
from PySide6.QtCore import QThread
from PySide6.QtCore import Signal as Signal
from src.backend.database import Database
from src import LOG_DIR

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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):

View File

@@ -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):

View File

@@ -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

View File

@@ -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):

View File

@@ -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")

View File

@@ -1,6 +1,6 @@
from .dialog_sources.Ui_about import Ui_about
from PyQt6 import QtWidgets
from PyQt6.QtCore import PYQT_VERSION_STR
from PySide6 import QtWidgets
import PySide6
from src import Icon, __version__, __author__
@@ -20,7 +20,7 @@ class About(QtWidgets.QDialog, Ui_about):
data = {
"Version": __version__,
"Author": __author__,
"PyQt6 Version": PYQT_VERSION_STR,
"PySide6 Version": PySide6.__version__,
"License": "MIT License",
"Icons": """Google Material Design Icons (https://fonts.google.com/icons)
StableDiffusion (logo)

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from .dialog_sources.Ui_apparat_extend import Ui_Dialog
from src import Icon

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from src.logic.dataclass import BookData

View File

@@ -1,5 +1,5 @@
from .dialog_sources.Ui_confirm_extend import Ui_extend_confirm
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
class ConfirmExtend(QtWidgets.QDialog, Ui_extend_confirm):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\confirm_extend.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\about.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
class Ui_about(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\app_status.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
from PySide6 import QtCore
class Ui_Form(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\apparat_extend.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
# Created by: PySide6 UI code generator 6.7.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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\confirm_extend.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
# Created by: PySide6 UI code generator 6.7.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_extend_confirm(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\edit_bookdata.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
class Ui_Dialog(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_add_table_entry.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
# Created by: PySide6 UI code generator 6.7.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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generate_citation.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
class Ui_Dialog(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generator_confirm.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
class Ui_Dialog(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\login.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
class Ui_Dialog(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\mail_preview.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
# Created by: PySide6 UI code generator 6.7.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_eMailPreview(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\medianadder.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
# Created by: PySide6 UI code generator 6.7.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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\newMailTemplateDesigner.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, QtWidgets
from PySide6 import QtCore, QtWidgets
class Ui_Dialog(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\parsed_titles.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
class Ui_Form(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\reminder.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, QtWidgets
from PySide6 import QtCore, QtWidgets
class Ui_Erinnerung(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\settings.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
# Created by: PySide6 UI code generator 6.7.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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\about.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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_about(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\app_status.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\apparat_extend.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\confirm_extend.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\documentprint.ui'
#
# Created by: PyQt6 UI code generator 6.9.0
# Created by: PySide6 UI code generator 6.9.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\edit_bookdata.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_add_table_entry.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generate_citation.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generator_confirm.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\login.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\mail_preview.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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_eMailPreview(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\medianadder.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\newMailTemplateDesigner.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\parsed_titles.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\reminder.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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_Erinnerung(object):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\settings.ui'
#
# Created by: PyQt6 UI code generator 6.9.0
# Created by: PySide6 UI code generator 6.9.0
#
# 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):

View File

@@ -1,5 +1,5 @@
from .dialog_sources.documentprint_ui import Ui_Dialog
from PyQt6 import QtWidgets, QtCore
from PySide6 import QtWidgets, QtCore
from src import Icon
from src.utils.richtext import SemapSchilder, SemesterDocument

View File

@@ -1,7 +1,7 @@
from .dialog_sources.Ui_elsa_add_table_entry import Ui_Dialog
from src.logic.webrequest import WebRequest, BibTextTransformer
from src import Icon
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from src.transformers.transformers import DictToTable
from src.logic.zotero import ZoteroController

View File

@@ -1,5 +1,5 @@
from .dialog_sources.Ui_elsa_generate_citation import Ui_Dialog
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
class ElsaCitation(QtWidgets.QDialog, Ui_Dialog):

View File

@@ -1,5 +1,5 @@
from .dialog_sources.Ui_elsa_generator_confirm import Ui_Dialog
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
class ElsaGenConfirm(QtWidgets.QDialog, Ui_Dialog):

View File

@@ -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):

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from src.logic.webrequest import BibTextTransformer, WebRequest

View File

@@ -2,7 +2,7 @@ import hashlib
import sys
import loguru
from PyQt6 import QtCore, QtWidgets
from PySide6 import QtCore, QtWidgets
from src import LOG_DIR, Icon
from src.backend.admin_console import AdminCommands
@@ -88,14 +88,14 @@ class LoginDialog(Ui_Dialog):
else:
# Credentials are invalid, display a warning
if username == "" or password == "":
logger.warning("Invalid username or password. Login failed.")
log.warning("Invalid username or password. Login failed.")
warning_dialog = QtWidgets.QMessageBox()
warning_dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning)
warning_dialog.setText("Please enter a username and password.")
warning_dialog.setWindowTitle("Login Failed")
warning_dialog.exec()
else:
logger.warning("Invalid username or password. Login failed.")
log.warning("Invalid username or password. Login failed.")
warning_dialog = QtWidgets.QMessageBox()
warning_dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning)
warning_dialog.setText(

View File

@@ -1,7 +1,7 @@
import os
import sys
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from src import Icon, settings as config

View File

@@ -1,6 +1,6 @@
import os
from PyQt6 import QtGui, QtWidgets, QtCore
from PySide6 import QtGui, QtWidgets, QtCore
from src import Icon
@@ -22,7 +22,7 @@ logger.add(sys.stdout)
class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog):
updateSignal = QtCore.pyqtSignal()
updateSignal = QtCore.Signal()
def __init__(self, parent=None) -> None:
super().__init__(parent)

View File

@@ -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, QtWidgets
from PySide6 import QtCore, QtWidgets
class Ui_Dialog(object):

View File

@@ -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.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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_eMailPreview(object):

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtCore, QtGui, QtWidgets
from PySide6 import QtCore, QtGui, QtWidgets
from .dialog_sources.medianadder_ui import Ui_Dialog
from src import Icon

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from src.backend import AutoAdder

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\parsed_titles.ui'
#
# Created by: PyQt6 UI code generator 6.9.0
# Created by: PySide6 UI code generator 6.9.0
#
# 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):

View File

@@ -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 QtWidgets
from PySide6 import QtWidgets
from src import Icon

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from .dialog_sources.reminder_ui import Ui_Erinnerung as Ui_Dialog
from src import Icon

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtCore, QtGui, QtWidgets
from PySide6 import QtCore, QtGui, QtWidgets
from src import Icon, settings
from .dialog_sources.settings_ui import Ui_Dialog as _settings
from src.ui.widgets.iconLine import IconWidget

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
class ValidatorButton(QtWidgets.QToolButton):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\semesterapparat_ui.ui'
#
# Created by: PyQt6 UI code generator 6.9.0
# Created by: PySide6 UI code generator 6.9.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\sounds\semesterapparat_ui.ui'
#
# Created by: PyQt6 UI code generator 6.9.0
# Created by: PySide6 UI code generator 6.9.0
#
# 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):

View File

@@ -11,9 +11,9 @@ from typing import Any, Union
import loguru
from natsort import natsorted
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import QThread
from PyQt6.QtGui import QRegularExpressionValidator
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtCore import QThread
from PySide6.QtGui import QRegularExpressionValidator
from src import LOG_DIR, Icon
from src.backend import AvailChecker, BookGrabber, Database, DocumentationThread

View File

@@ -3,9 +3,9 @@ from typing import Any
import darkdetect
import loguru
from PyQt6 import QtCore, QtWidgets
from PyQt6.QtCore import QDate
from PyQt6.QtGui import QColor, QPen
from PySide6 import QtCore, QtWidgets
from PySide6.QtCore import QDate
from PySide6.QtGui import QColor, QPen
from src import LOG_DIR
from src.backend import Database

View File

@@ -16,7 +16,7 @@ __all__ = [
from .collapse import StatusWidget
from .filepicker import FilePicker
from .graph import DataGraph
from .graph import DataQtGraph
from .calendar_entry import CalendarEntry
from .MessageCalendar import MessageCalendar
from .searchPage import SearchStatisticPage

View File

@@ -1,11 +1,11 @@
from PyQt6 import QtWidgets
from PyQt6.QtCore import pyqtSignal
from PySide6 import QtWidgets
from PySide6.QtCore import Signal
from .widget_sources.admin_create_user_ui import Ui_Dialog
from src.backend import AdminCommands, Database
class UserCreate(QtWidgets.QDialog, Ui_Dialog):
admin_action_changed = pyqtSignal()
admin_action_changed = Signal()
def __init__(self):
super(UserCreate, self).__init__()

View File

@@ -1,5 +1,5 @@
from .widget_sources.admin_edit_prof_ui import Ui_Dialog #
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from src.logic import Prof
from src.backend import Database

View File

@@ -1,5 +1,5 @@
from .widget_sources.admin_edit_user_ui import Ui_Dialog
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
from src.backend import Database
from src.backend import AdminCommands

View File

@@ -1,6 +1,6 @@
from .widget_sources.admin_query_ui import Ui_Form
from PyQt6 import QtWidgets, QtCore
from PySide6 import QtWidgets, QtCore
from src import Icon
from src.backend import Database

View File

@@ -1,15 +1,13 @@
from .widget_sources.calendar_entry_ui import Ui_Dialog
from PyQt6 import QtWidgets
from PyQt6.QtCore import pyqtSignal
from PySide6 import QtWidgets
from PySide6.QtCore import Signal
from src.backend.database import Database
from src import Icon
class CalendarEntry(QtWidgets.QDialog, Ui_Dialog):
deleteSignal = pyqtSignal(
int
) # when emit, send the id of the message to be deleted
repaintSignal = pyqtSignal(str)
deleteSignal = Signal(int) # when emit, send the id of the message to be deleted
repaintSignal = Signal(str)
def __init__(self, parent=None, messages=None, date=None):
super().__init__(parent)

View File

@@ -1,6 +1,6 @@
# import pysignal pyslot
from PyQt6.QtCore import pyqtSignal as Signal
from PyQt6.QtWidgets import (
from PySide6.QtCore import Signal as Signal
from PySide6.QtWidgets import (
QApplication,
QTreeWidget,
QTreeWidgetItem,

View File

@@ -1,13 +1,13 @@
import os
from .widget_sources.elsa_maindialog_ui import Ui_Dialog
from PyQt6 import QtCore, QtWidgets, QtGui
from PyQt6.QtGui import QRegularExpressionValidator
from PyQt6.QtCore import QDate
from PySide6 import QtCore, QtWidgets, QtGui
from PySide6.QtGui import QRegularExpressionValidator
from PySide6.QtCore import QDate
from src import Icon
from src.backend import Semester, Database
from src.logic import elsa_word_to_csv, Prof
from src.ui.dialogs import ElsaAddEntry, popus_confirm
from src.ui.widgets import FilePicker, DataGraph
from src.ui.widgets import FilePicker, DataQtGraph
from src.backend import recreateElsaFile
import loguru
import sys
@@ -463,10 +463,12 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
self.graph_data["x"].pop(0)
self.graph_data["y"].pop(0)
# generateMissing = True if len(self.graph_data["x"]) > 2 else False
graph = DataGraph(
graph = DataQtGraph(
title="ELSA Apparate pro Semester",
data=self.graph_data,
label="Anzahl der Apparate",
generateMissing=False,
y_label="Anzahl der Apparate",
x_rotation=0,
)
log.debug(self.graph_data)
self.elsa_statistics_table.setRowCount(0)

View File

@@ -1,7 +1,7 @@
import sys
from PyQt6.QtCore import QSettings
from PyQt6.QtWidgets import QApplication, QFileDialog
from PySide6.QtCore import QSettings
from PySide6.QtWidgets import QApplication, QFileDialog
class FilePicker:

View File

@@ -1,5 +1,5 @@
from .widget_sources.icon_widget_ui import Ui_Dialog
from PyQt6 import QtWidgets
from PySide6 import QtWidgets
import sys
from loguru import logger as log

View File

@@ -2,14 +2,14 @@ import sys
import loguru
from natsort import natsorted
from PyQt6 import QtCore, QtGui, QtWidgets
from PyQt6.QtCore import pyqtSignal
from PySide6 import QtCore, QtGui, QtWidgets
from PySide6.QtCore import Signal
from src import LOG_DIR
from src.backend import Database, Semester
from src.logic import Prof, custom_sort, sort_semesters_list
from src.ui.dialogs import ApparatExtendDialog, Mail_Dialog, ReminderDialog
from src.ui.widgets import DataGraph, StatusWidget
from src.ui.widgets import DataQtGraph, StatusWidget
from .widget_sources.search_statistic_page_ui import Ui_Dialog
@@ -26,10 +26,10 @@ class MyComboBox(QtWidgets.QComboBox):
class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
apparat_open = pyqtSignal(str)
reloadSignal = pyqtSignal()
refreshSignal = pyqtSignal()
updateCalendar = pyqtSignal(int, list)
apparat_open = Signal(str)
reloadSignal = Signal()
refreshSignal = Signal()
updateCalendar = Signal(int, list)
def __init__(self):
log.info("SearchStatisticPage started")
@@ -310,7 +310,12 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
"x": [i[0] for i in data],
"y": {"Erstellt": [i[1] for i in data], "Gelöscht": [i[2] for i in data]},
}
graph = DataGraph(title="Erstellte und gelöschte Apparate", data=graph_data)
graph = DataQtGraph(
title="Erstellte und gelöschte Apparate",
data=graph_data,
generateMissing=False,
y_label="Anzahl der Apparate",
)
# place the graph into tabWidget_3
self.tabWidget_3.addTab(graph, "Graph")

View File

@@ -1,6 +1,10 @@
from .widget_sources.welcome_wizard_ui import Ui_Wizard
from PyQt6 import QtWidgets, QtCore, QtGui
from PySide6 import QtWidgets, QtCore, QtGui
from src import settings
from src.backend import AdminCommands
from appdirs import AppDirs
appdirs = AppDirs("SemesterApparatsManager", "SAM")
class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard):
def __init__(self, parent=None):
@@ -8,21 +12,146 @@ class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard):
self.setupUi(self)
self.btn_database.clicked.connect(self.open_database_settings)
self.btn_temp.clicked.connect(self.open_temp_settings)
self.btn_test.clicked.connect(self.test_login_data)
self.btn_create.clicked.connect(self.create_sam_user)
# mail password field
self.settings_mail_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password)
# allow user to toggle password visibility
self.settings_mail_password.setContextMenuPolicy(
QtCore.Qt.ContextMenuPolicy.CustomContextMenu
)
self.settings_mail_password.customContextMenuRequested.connect(
self.toggle_password_visibility
)
# if button for next page is clicked, run function to store settings
self.button(QtWidgets.QWizard.WizardButton.FinishButton).clicked.connect(
self.store_settings
)
self.settings_mail_use_user_name.toggled.connect(self.set_check_text)
# set initial values for checkbox, database
self.set_check_text(self.settings_mail_use_user_name.isChecked())
self.settings_database.setText(
str(settings.database.path) or str(appdirs.user_data_dir)
)
self.settings_temp.setText(
str(settings.database.temp) or str(appdirs.user_cache_dir)
)
def test_login_data(self):
sam_users = AdminCommands().list_users()
sam_users = [user[2] for user in sam_users]
if not sam_users:
QtWidgets.QMessageBox.critical(
self,
"Error",
"No SAM users found. Please create a SAM user first.",
)
return
username = self.sam_username.text()
if username in sam_users:
QtWidgets.QMessageBox.information(
self,
"Error",
f"User '{username}' exists in SAM.",
)
def create_sam_user(self):
"""Create a SAM user in the database."""
admin = AdminCommands()
if not admin.create_user(self.sam_username.text(), self.sam_password.text()):
QtWidgets.QMessageBox.critical(
self,
"Error",
"Failed to create SAM user",
)
else:
QtWidgets.QMessageBox.information(
self,
"Success",
"SAM user created successfully",
)
def set_check_text(self, checked):
"""Set the text of the checkbox based on its state."""
if checked:
self.settings_mail_use_user_name.setText("Nutzername wird verwendet")
else:
self.settings_mail_use_user_name.setText("Nutzername wird nicht verwendet")
def toggle_password_visibility(self, pos):
"""Toggle the visibility of the password field."""
if (
self.settings_mail_password.echoMode()
== QtWidgets.QLineEdit.EchoMode.Password
):
self.settings_mail_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal)
else:
self.settings_mail_password.setEchoMode(
QtWidgets.QLineEdit.EchoMode.Password
)
def store_settings(self):
# database page
db_path = self.settings_database.text()
temp_path = self.settings_temp.text()
db_name = self.settings_database_name.text()
# mail page
smtp_server = self.settings_mail_smtp_server.text()
smtp_port = self.settings_mail_smtp_port.text()
mail_sender = self.settings_mail_address.text()
mail_user_name = self.settings_mail_user_name.text()
mail_password = self.settings_mail_password.text()
mail_printer_mail = self.settings_mail_printer.text()
mail_signature = self.settings_mail_signature.toPlainText()
use_user_name = self.settings_mail_use_user_name.isChecked()
# zotero page
zotero__api_key = self.settings_zotero_api_key.text()
zotero_user_id = self.settings_zotero_library_id.text()
zotero_library_type = self.settings_zotero_library_type.text()
# openai page
openai_api_key = self.settings_openai_api_key.text()
openai_model = self.settings_openai_model.currentText()
# store settings in config
settings.set_database_attr("path", db_path)
settings.set_database_attr("name", db_name)
settings.set_database_attr("temp", temp_path)
settings.set_mail_attr("smtp_server", smtp_server)
settings.set_mail_attr("port", smtp_port)
settings.set_mail_attr("sender", mail_sender)
settings.set_mail_attr("user_name", mail_user_name)
settings.set_mail_attr("password", mail_password)
settings.set_mail_attr("printer_mail", mail_printer_mail)
settings.set_mail_attr("signature", mail_signature)
settings.set_mail_attr("use_user_name", use_user_name)
settings.set_zotero_attr("api_key", zotero__api_key)
settings.set_zotero_attr("library_id", zotero_user_id)
settings.set_zotero_attr("library_type", zotero_library_type)
settings.set_openai_attr("api_key", openai_api_key)
settings.set_openai_attr("model", openai_model)
# save settings to file
print("Saving settings...")
print(settings)
settings.save()
def open_database_settings(self):
#open filepicker dialog to select database file folder
file_dialog = QtWidgets.QFileDialog(self, "Select Database File")
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.ExistingFile)
file_dialog.setNameFilter("Database Files (*.db *.sqlite *.sqlite3)")
file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.List)
file_dialog.setDirectory(settings.database.path) # Set initial directory if needed
file_dialog.setOption(QtWidgets.QFileDialog.Option.DontUseNativeDialog, True)
file_dialog.setWindowFlags(file_dialog.windowFlags() | QtCore.Qt.WindowType.WindowStaysOnTopHint)
# set start dir to appdir.user_data_dir
file_dialog.setDirectory(str(appdirs.user_data_dir))
if file_dialog.exec():
selected_files = file_dialog.selectedFiles()
if selected_files:
# Do something with the selected database file
print("Selected database file:", selected_files[0])
db_path = selected_files[0]
self.settings_database.setText(db_path)
def open_temp_settings(self):
#open filepicker dialog to select temporary directory
@@ -34,8 +163,8 @@ class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard):
selected_dirs = dir_dialog.selectedFiles()
if selected_dirs:
# Do something with the selected temporary directory
print("Selected temporary directory:", selected_dirs[0])
temp_path = selected_dirs[0]
self.settings_temp.setText(temp_path)
def launch_wizard():
"""Launch the welcome wizard."""

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_create_user.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_prof.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_user.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\calendar_entry.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\elsa_maindialog.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\icon_widget.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\search_statistic_page.ui'
#
# Created by: PyQt6 UI code generator 6.9.0
# Created by: PySide6 UI code generator 6.9.0
#
# 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):

View File

@@ -23,7 +23,7 @@
<enum>Qt::PlainText</enum>
</property>
<property name="currentId">
<number>0</number>
<number>5</number>
</property>
<widget class="QWizardPage" name="wizardPage1">
<property name="title">
@@ -41,6 +41,9 @@
<property name="enabled">
<bool>false</bool>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="lineWidth">
<number>0</number>
</property>
@@ -64,7 +67,7 @@ li.checked::marker { content: &quot;\2612&quot;; }
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- eMail&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Zotero Integration&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- KI Integration&lt;/p&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;Anschließend kann ein Nutzeraccount für SAM erstellt werden&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@@ -81,17 +84,43 @@ li.checked::marker { content: &quot;\2612&quot;; }
<string notr="true">1</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="1">
<widget class="QLineEdit" name="settings_temp">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="placeholderText">
<string>C:\Users\[Nutzer]\AppData\Local\SAM\SemesterApparatsManager\Cache</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Datenbank</string>
<string>Datenbankpfad</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="settings_database">
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="placeholderText">
<string>semesterapparate.db</string>
<string/>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Temporäre Daten</string>
</property>
</widget>
</item>
@@ -102,24 +131,24 @@ li.checked::marker { content: &quot;\2612&quot;; }
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<item row="2" column="2">
<widget class="QToolButton" name="btn_temp">
<property name="text">
<string>Temporäre Daten</string>
<string>...</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Datenbankname</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="settings_temp">
<widget class="QLineEdit" name="settings_database_name">
<property name="placeholderText">
<string>C:\Users\[Nutzer]\AppData\Local\SAM\SemesterApparatsManager\Cache</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QToolButton" name="btn_temp">
<property name="text">
<string>...</string>
<string>semesterapparate.db</string>
</property>
</widget>
</item>
@@ -144,16 +173,41 @@ li.checked::marker { content: &quot;\2612&quot;; }
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/>
<widget class="QLineEdit" name="settings_mail_smtp_server">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
<widget class="QLineEdit" name="settings_mail_smtp_port">
<property name="inputMethodHints">
<set>Qt::ImhDigitsOnly</set>
</property>
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_3"/>
<widget class="QLineEdit" name="settings_mail_user_name">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_4"/>
<widget class="QLineEdit" name="settings_mail_password">
<property name="toolTip">
<string>Rechtsklick, um passwort anzuzeigen</string>
</property>
<property name="statusTip">
<string/>
</property>
<property name="whatsThis">
<string/>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
@@ -184,7 +238,11 @@ li.checked::marker { content: &quot;\2612&quot;; }
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="settings_mail_"/>
<widget class="QLineEdit" name="settings_mail_printer">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
@@ -202,7 +260,7 @@ für SMTP</string>
</widget>
</item>
<item row="5" column="1">
<widget class="QTextEdit" name="textEdit_2"/>
<widget class="QTextEdit" name="settings_mail_signature"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
@@ -219,7 +277,11 @@ für SMTP</string>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_5"/>
<widget class="QLineEdit" name="settings_mail_address">
<property name="clearButtonEnabled">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
@@ -282,7 +344,7 @@ für SMTP</string>
</attribute>
<layout class="QFormLayout" name="formLayout_3">
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_6"/>
<widget class="QLineEdit" name="settings_openai_api_key"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_14">
@@ -299,9 +361,9 @@ für SMTP</string>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox">
<widget class="QComboBox" name="settings_openai_model">
<property name="currentText">
<string>gpt-4o-mini</string>
<string>gpt3.5-turbo</string>
</property>
<item>
<property name="text">
@@ -342,7 +404,94 @@ für SMTP</string>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizardPage6">
<property name="title">
<string>SAM Nutzer</string>
</property>
<property name="subTitle">
<string>Hier kann ein Nutzer für SAM erstellt werden</string>
</property>
<layout class="QFormLayout" name="formLayout_4">
<item row="0" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Nutzername</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="sam_username"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Passwort</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="sam_password"/>
</item>
<item row="2" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QPushButton" name="btn_test">
<property name="text">
<string>Prüfen</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btn_create">
<property name="text">
<string>Anlegen</string>
</property>
<property name="default">
<bool>true</bool>
</property>
<property name="flat">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<tabstops>
<tabstop>settings_database</tabstop>
<tabstop>btn_database</tabstop>
<tabstop>settings_database_name</tabstop>
<tabstop>settings_temp</tabstop>
<tabstop>btn_temp</tabstop>
<tabstop>settings_mail_smtp_server</tabstop>
<tabstop>settings_mail_smtp_port</tabstop>
<tabstop>settings_mail_address</tabstop>
<tabstop>settings_mail_user_name</tabstop>
<tabstop>settings_mail_password</tabstop>
<tabstop>settings_mail_signature</tabstop>
<tabstop>settings_mail_printer</tabstop>
<tabstop>settings_mail_use_user_name</tabstop>
<tabstop>settings_zotero_api_key</tabstop>
<tabstop>settings_zotero_library_id</tabstop>
<tabstop>settings_zotero_library_type</tabstop>
<tabstop>settings_openai_api_key</tabstop>
<tabstop>settings_openai_model</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\welcome_wizard.ui'
#
# Created by: PyQt6 UI code generator 6.9.0
# Created by: PySide6 UI code generator 6.9.0
#
# 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):
@@ -16,7 +16,7 @@ class Ui_Wizard(object):
Wizard.setSizeGripEnabled(False)
Wizard.setWizardStyle(QtWidgets.QWizard.WizardStyle.ClassicStyle)
Wizard.setSubTitleFormat(QtCore.Qt.TextFormat.PlainText)
Wizard.setCurrentId(0)
Wizard.setCurrentId(5)
self.wizardPage1 = QtWidgets.QWizardPage()
self.wizardPage1.setSubTitle("")
self.wizardPage1.setObjectName("wizardPage1")
@@ -24,6 +24,7 @@ class Ui_Wizard(object):
self.verticalLayout.setObjectName("verticalLayout")
self.textEdit = QtWidgets.QTextEdit(parent=self.wizardPage1)
self.textEdit.setEnabled(False)
self.textEdit.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.textEdit.setLineWidth(0)
self.textEdit.setAutoFormatting(QtWidgets.QTextEdit.AutoFormattingFlag.AutoAll)
self.textEdit.setReadOnly(True)
@@ -34,24 +35,35 @@ class Ui_Wizard(object):
self.wizardPage2.setObjectName("wizardPage2")
self.gridLayout = QtWidgets.QGridLayout(self.wizardPage2)
self.gridLayout.setObjectName("gridLayout")
self.settings_temp = QtWidgets.QLineEdit(parent=self.wizardPage2)
self.settings_temp.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.settings_temp.setReadOnly(True)
self.settings_temp.setObjectName("settings_temp")
self.gridLayout.addWidget(self.settings_temp, 2, 1, 1, 1)
self.label = QtWidgets.QLabel(parent=self.wizardPage2)
self.label.setObjectName("label")
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.settings_database = QtWidgets.QLineEdit(parent=self.wizardPage2)
self.settings_database.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus)
self.settings_database.setReadOnly(True)
self.settings_database.setPlaceholderText("")
self.settings_database.setObjectName("settings_database")
self.gridLayout.addWidget(self.settings_database, 0, 1, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=self.wizardPage2)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1)
self.btn_database = QtWidgets.QToolButton(parent=self.wizardPage2)
self.btn_database.setObjectName("btn_database")
self.gridLayout.addWidget(self.btn_database, 0, 2, 1, 1)
self.label_2 = QtWidgets.QLabel(parent=self.wizardPage2)
self.label_2.setObjectName("label_2")
self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1)
self.settings_temp = QtWidgets.QLineEdit(parent=self.wizardPage2)
self.settings_temp.setObjectName("settings_temp")
self.gridLayout.addWidget(self.settings_temp, 1, 1, 1, 1)
self.btn_temp = QtWidgets.QToolButton(parent=self.wizardPage2)
self.btn_temp.setObjectName("btn_temp")
self.gridLayout.addWidget(self.btn_temp, 1, 2, 1, 1)
self.gridLayout.addWidget(self.btn_temp, 2, 2, 1, 1)
self.label_16 = QtWidgets.QLabel(parent=self.wizardPage2)
self.label_16.setObjectName("label_16")
self.gridLayout.addWidget(self.label_16, 1, 0, 1, 1)
self.settings_database_name = QtWidgets.QLineEdit(parent=self.wizardPage2)
self.settings_database_name.setObjectName("settings_database_name")
self.gridLayout.addWidget(self.settings_database_name, 1, 1, 1, 1)
Wizard.addPage(self.wizardPage2)
self.wizardPage3 = QtWidgets.QWizardPage()
self.wizardPage3.setObjectName("wizardPage3")
@@ -60,18 +72,34 @@ class Ui_Wizard(object):
self.label_3 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_3.setObjectName("label_3")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_3)
self.lineEdit = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.lineEdit.setObjectName("lineEdit")
self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit)
self.lineEdit_2 = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.lineEdit_2.setObjectName("lineEdit_2")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_2)
self.lineEdit_3 = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.lineEdit_3.setObjectName("lineEdit_3")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_3)
self.lineEdit_4 = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.lineEdit_4.setObjectName("lineEdit_4")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_4)
self.settings_mail_smtp_server = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.settings_mail_smtp_server.setClearButtonEnabled(True)
self.settings_mail_smtp_server.setObjectName("settings_mail_smtp_server")
self.formLayout.setWidget(
0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_smtp_server
)
self.settings_mail_smtp_port = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.settings_mail_smtp_port.setInputMethodHints(
QtCore.Qt.InputMethodHint.ImhDigitsOnly
)
self.settings_mail_smtp_port.setClearButtonEnabled(True)
self.settings_mail_smtp_port.setObjectName("settings_mail_smtp_port")
self.formLayout.setWidget(
1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_smtp_port
)
self.settings_mail_user_name = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.settings_mail_user_name.setClearButtonEnabled(True)
self.settings_mail_user_name.setObjectName("settings_mail_user_name")
self.formLayout.setWidget(
3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_user_name
)
self.settings_mail_password = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.settings_mail_password.setStatusTip("")
self.settings_mail_password.setWhatsThis("")
self.settings_mail_password.setObjectName("settings_mail_password")
self.formLayout.setWidget(
4, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_password
)
self.label_4 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_4.setObjectName("label_4")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_4)
@@ -84,27 +112,35 @@ class Ui_Wizard(object):
self.settings_mail_use_user_name = QtWidgets.QCheckBox(parent=self.wizardPage3)
self.settings_mail_use_user_name.setObjectName("settings_mail_use_user_name")
self.formLayout.setWidget(8, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_use_user_name)
self.settings_mail_ = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.settings_mail_.setObjectName("settings_mail_")
self.formLayout.setWidget(7, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_)
self.settings_mail_printer = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.settings_mail_printer.setClearButtonEnabled(True)
self.settings_mail_printer.setObjectName("settings_mail_printer")
self.formLayout.setWidget(
7, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_printer
)
self.label_8 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_8.setObjectName("label_8")
self.formLayout.setWidget(7, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_8)
self.label_9 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_9.setObjectName("label_9")
self.formLayout.setWidget(8, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_9)
self.textEdit_2 = QtWidgets.QTextEdit(parent=self.wizardPage3)
self.textEdit_2.setObjectName("textEdit_2")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.ItemRole.FieldRole, self.textEdit_2)
self.settings_mail_signature = QtWidgets.QTextEdit(parent=self.wizardPage3)
self.settings_mail_signature.setObjectName("settings_mail_signature")
self.formLayout.setWidget(
5, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_signature
)
self.label_10 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_10.setObjectName("label_10")
self.formLayout.setWidget(5, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_10)
self.label_7 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_7.setObjectName("label_7")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_7)
self.lineEdit_5 = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.lineEdit_5.setObjectName("lineEdit_5")
self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_5)
self.settings_mail_address = QtWidgets.QLineEdit(parent=self.wizardPage3)
self.settings_mail_address.setClearButtonEnabled(True)
self.settings_mail_address.setObjectName("settings_mail_address")
self.formLayout.setWidget(
2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_address
)
Wizard.addPage(self.wizardPage3)
self.wizardPage4 = QtWidgets.QWizardPage()
self.wizardPage4.setObjectName("wizardPage4")
@@ -133,59 +169,151 @@ class Ui_Wizard(object):
self.wizardPage5.setObjectName("wizardPage5")
self.formLayout_3 = QtWidgets.QFormLayout(self.wizardPage5)
self.formLayout_3.setObjectName("formLayout_3")
self.lineEdit_6 = QtWidgets.QLineEdit(parent=self.wizardPage5)
self.lineEdit_6.setObjectName("lineEdit_6")
self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_6)
self.settings_openai_api_key = QtWidgets.QLineEdit(parent=self.wizardPage5)
self.settings_openai_api_key.setObjectName("settings_openai_api_key")
self.formLayout_3.setWidget(
0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_openai_api_key
)
self.label_14 = QtWidgets.QLabel(parent=self.wizardPage5)
self.label_14.setObjectName("label_14")
self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_14)
self.label_15 = QtWidgets.QLabel(parent=self.wizardPage5)
self.label_15.setObjectName("label_15")
self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_15)
self.comboBox = QtWidgets.QComboBox(parent=self.wizardPage5)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.comboBox)
self.settings_openai_model = QtWidgets.QComboBox(parent=self.wizardPage5)
self.settings_openai_model.setObjectName("settings_openai_model")
self.settings_openai_model.addItem("")
self.settings_openai_model.addItem("")
self.settings_openai_model.addItem("")
self.settings_openai_model.addItem("")
self.settings_openai_model.addItem("")
self.settings_openai_model.addItem("")
self.settings_openai_model.addItem("")
self.formLayout_3.setWidget(
1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_openai_model
)
Wizard.addPage(self.wizardPage5)
self.wizardPage6 = QtWidgets.QWizardPage()
self.wizardPage6.setObjectName("wizardPage6")
self.formLayout_4 = QtWidgets.QFormLayout(self.wizardPage6)
self.formLayout_4.setObjectName("formLayout_4")
self.label_17 = QtWidgets.QLabel(parent=self.wizardPage6)
self.label_17.setObjectName("label_17")
self.formLayout_4.setWidget(
0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_17
)
self.sam_username = QtWidgets.QLineEdit(parent=self.wizardPage6)
self.sam_username.setObjectName("sam_username")
self.formLayout_4.setWidget(
0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.sam_username
)
self.label_18 = QtWidgets.QLabel(parent=self.wizardPage6)
self.label_18.setObjectName("label_18")
self.formLayout_4.setWidget(
1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_18
)
self.sam_password = QtWidgets.QLineEdit(parent=self.wizardPage6)
self.sam_password.setObjectName("sam_password")
self.formLayout_4.setWidget(
1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.sam_password
)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.btn_test = QtWidgets.QPushButton(parent=self.wizardPage6)
self.btn_test.setObjectName("btn_test")
self.horizontalLayout.addWidget(self.btn_test)
self.btn_create = QtWidgets.QPushButton(parent=self.wizardPage6)
self.btn_create.setDefault(True)
self.btn_create.setFlat(False)
self.btn_create.setObjectName("btn_create")
self.horizontalLayout.addWidget(self.btn_create)
self.formLayout_4.setLayout(
2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.horizontalLayout
)
spacerItem = QtWidgets.QSpacerItem(
20,
40,
QtWidgets.QSizePolicy.Policy.Minimum,
QtWidgets.QSizePolicy.Policy.Expanding,
)
self.formLayout_4.setItem(
3, QtWidgets.QFormLayout.ItemRole.FieldRole, spacerItem
)
Wizard.addPage(self.wizardPage6)
self.retranslateUi(Wizard)
QtCore.QMetaObject.connectSlotsByName(Wizard)
Wizard.setTabOrder(self.settings_database, self.btn_database)
Wizard.setTabOrder(self.btn_database, self.settings_database_name)
Wizard.setTabOrder(self.settings_database_name, self.settings_temp)
Wizard.setTabOrder(self.settings_temp, self.btn_temp)
Wizard.setTabOrder(self.btn_temp, self.settings_mail_smtp_server)
Wizard.setTabOrder(self.settings_mail_smtp_server, self.settings_mail_smtp_port)
Wizard.setTabOrder(self.settings_mail_smtp_port, self.settings_mail_address)
Wizard.setTabOrder(self.settings_mail_address, self.settings_mail_user_name)
Wizard.setTabOrder(self.settings_mail_user_name, self.settings_mail_password)
Wizard.setTabOrder(self.settings_mail_password, self.settings_mail_signature)
Wizard.setTabOrder(self.settings_mail_signature, self.settings_mail_printer)
Wizard.setTabOrder(self.settings_mail_printer, self.settings_mail_use_user_name)
Wizard.setTabOrder(
self.settings_mail_use_user_name, self.settings_zotero_api_key
)
Wizard.setTabOrder(
self.settings_zotero_api_key, self.settings_zotero_library_id
)
Wizard.setTabOrder(
self.settings_zotero_library_id, self.settings_zotero_library_type
)
Wizard.setTabOrder(
self.settings_zotero_library_type, self.settings_openai_api_key
)
Wizard.setTabOrder(self.settings_openai_api_key, self.settings_openai_model)
def retranslateUi(self, Wizard):
_translate = QtCore.QCoreApplication.translate
Wizard.setWindowTitle(_translate("Wizard", "Wizard"))
self.wizardPage1.setTitle(_translate("Wizard", "Willkommen"))
self.textEdit.setHtml(_translate("Wizard", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><meta charset=\"utf-8\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"hr { height: 1px; border-width: 0; }\n"
"li.unchecked::marker { content: \"\\2610\"; }\n"
"li.checked::marker { content: \"\\2612\"; }\n"
"</style></head><body style=\" font-family:\'Segoe UI\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">Es wurde erkannt, dass der SemesterApparatsManager (SAM) zum ersten Mal gestartet wurde. In den Folgenden Seiten werden die grundlegenden Einstellungen festgelegt, anschließend wird SAM geöffnet. Folgende Einstellungen werden über diesen Wizard festgelegt:</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">- Datenbank</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">- eMail</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">- Zotero Integration</p>\n"
"<p style=\" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\">- KI Integration</p>\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>"))
self.textEdit.setHtml(
_translate(
"Wizard",
'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n'
'<html><head><meta name="qrichtext" content="1" /><meta charset="utf-8" /><style type="text/css">\n'
"p, li { white-space: pre-wrap; }\n"
"hr { height: 1px; border-width: 0; }\n"
'li.unchecked::marker { content: "\\2610"; }\n'
'li.checked::marker { content: "\\2612"; }\n'
"</style></head><body style=\" font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
'<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Es wurde erkannt, dass der SemesterApparatsManager (SAM) zum ersten Mal gestartet wurde. In den Folgenden Seiten werden die grundlegenden Einstellungen festgelegt, anschließend wird SAM geöffnet. Folgende Einstellungen werden über diesen Wizard festgelegt:</p>\n'
'<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p>\n'
'<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Datenbank</p>\n'
'<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- eMail</p>\n'
'<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Zotero Integration</p>\n'
'<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- KI Integration</p>\n'
'<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Anschließend kann ein Nutzeraccount für SAM erstellt werden</p></body></html>',
)
)
self.wizardPage2.setTitle(_translate("Wizard", "Datenbank"))
self.wizardPage2.setSubTitle(_translate("Wizard", "Hier werden die Einstellungen für die Datenbank und temporären Dateien festgelegt. Über den [...] Knopf können die Datenbank und der Speicherort für die temporären Daten festgelegt werden"))
self.label.setText(_translate("Wizard", "Datenbank"))
self.settings_database.setPlaceholderText(_translate("Wizard", "semesterapparate.db"))
self.btn_database.setText(_translate("Wizard", "..."))
self.label_2.setText(_translate("Wizard", "Temporäre Daten"))
self.wizardPage2.setSubTitle(
_translate(
"Wizard",
"Hier werden die Einstellungen für die Datenbank und temporären Dateien festgelegt. Über den [...] Knopf können die Datenbank und der Speicherort für die temporären Daten festgelegt werden",
)
)
self.settings_temp.setPlaceholderText(_translate("Wizard", "C:\\Users\\[Nutzer]\\AppData\\Local\\SAM\\SemesterApparatsManager\\Cache"))
self.label.setText(_translate("Wizard", "Datenbankpfad"))
self.label_2.setText(_translate("Wizard", "Temporäre Daten"))
self.btn_database.setText(_translate("Wizard", "..."))
self.btn_temp.setText(_translate("Wizard", "..."))
self.label_16.setText(_translate("Wizard", "Datenbankname"))
self.settings_database_name.setPlaceholderText(
_translate("Wizard", "semesterapparate.db")
)
self.wizardPage3.setTitle(_translate("Wizard", "Mail"))
self.wizardPage3.setSubTitle(_translate("Wizard", "Hier werden die Einstellungen für die Mailverbindung eingegeben"))
self.label_3.setText(_translate("Wizard", "SMTP Server"))
self.settings_mail_password.setToolTip(
_translate("Wizard", "Rechtsklick, um passwort anzuzeigen")
)
self.label_4.setText(_translate("Wizard", "Nutzername"))
self.label_5.setText(_translate("Wizard", "SMTP Port"))
self.label_6.setText(_translate("Wizard", "Passwort"))
@@ -205,11 +333,19 @@ class Ui_Wizard(object):
self.wizardPage5.setSubTitle(_translate("Wizard", "Hier werden die Einstellungen für die KI Integration eingestellt."))
self.label_14.setText(_translate("Wizard", "API Key"))
self.label_15.setText(_translate("Wizard", "ChatGPT Modell"))
self.comboBox.setCurrentText(_translate("Wizard", "gpt-4o-mini"))
self.comboBox.setItemText(0, _translate("Wizard", "gpt3.5-turbo"))
self.comboBox.setItemText(1, _translate("Wizard", "gpt-4"))
self.comboBox.setItemText(2, _translate("Wizard", "gpt-4o"))
self.comboBox.setItemText(3, _translate("Wizard", "gpt-4o-mini"))
self.comboBox.setItemText(4, _translate("Wizard", "gpt-4.1"))
self.comboBox.setItemText(5, _translate("Wizard", "gpt-4.1-mini"))
self.comboBox.setItemText(6, _translate("Wizard", "gpt-4.1-nano"))
self.settings_openai_model.setCurrentText(_translate("Wizard", "gpt3.5-turbo"))
self.settings_openai_model.setItemText(0, _translate("Wizard", "gpt3.5-turbo"))
self.settings_openai_model.setItemText(1, _translate("Wizard", "gpt-4"))
self.settings_openai_model.setItemText(2, _translate("Wizard", "gpt-4o"))
self.settings_openai_model.setItemText(3, _translate("Wizard", "gpt-4o-mini"))
self.settings_openai_model.setItemText(4, _translate("Wizard", "gpt-4.1"))
self.settings_openai_model.setItemText(5, _translate("Wizard", "gpt-4.1-mini"))
self.settings_openai_model.setItemText(6, _translate("Wizard", "gpt-4.1-nano"))
self.wizardPage6.setTitle(_translate("Wizard", "SAM Nutzer"))
self.wizardPage6.setSubTitle(
_translate("Wizard", "Hier kann ein Nutzer für SAM erstellt werden")
)
self.label_17.setText(_translate("Wizard", "Nutzername"))
self.label_18.setText(_translate("Wizard", "Passwort"))
self.btn_test.setText(_translate("Wizard", "Prüfen"))
self.btn_create.setText(_translate("Wizard", "Anlegen"))

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\utils\docs.ui'
#
# Created by: PyQt6 UI code generator 6.7.1
# Created by: PySide6 UI code generator 6.7.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):

View File

@@ -1,12 +1,12 @@
# Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\utils\docs.ui'
#
# Created by: PyQt6 UI code generator 6.8.0
# Created by: PySide6 UI code generator 6.8.0
#
# 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):

View File

@@ -1,8 +1,8 @@
import os
import sys
# from PyQt6 import Webview
from PyQt6.QtWidgets import QApplication, QMainWindow, QTabWidget
# from PySide6 import Webview
from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget
documentation_path = "docs"

View File

@@ -1,5 +1,5 @@
import darkdetect
from PyQt6 import QtGui
from PySide6 import QtGui
import re
from src import settings

Some files were not shown because too many files have changed in this diff Show More