start work on welcome wizard

This commit is contained in:
2025-06-10 16:23:29 +02:00
parent dbad7165bc
commit fdab4e5caa
6 changed files with 690 additions and 4 deletions

57
config/base_config.yaml Normal file
View File

@@ -0,0 +1,57 @@
default_apps: true
save_path: .
icon_path: icons/
openAI:
api_key:
model:
zotero:
api_key:
library_id:
library_type: user
database:
name: semesterapparate.db
path: .
temp: ~/AppData/Local/SAM/SemesterApparatsManager/Cache
mail:
smtp_server:
port:
sender:
printer_mail:
user_name:
use_user_name: true
password:
signature:
colors:
dark: '#6b6160'
light: '#000000'
warning: '#ff0000'
success: '#00ff00'
icons:
locked: locked.svg
logo: logo.ico
show_password: visibility_off.svg
hide_password: visibility_on.svg
settings: settings.svg
today: calendar_today.svg
save: save.svg
edit_note: edit_note.svg
warning: warning.svg
error: error.svg
mail: mail.svg
semester: semester.svg
template_fail: test_fail.svg
offAction: shutdown.svg
info: info.svg
help: help.svg
close: close.svg
notification: notification.svg
valid_true: check_success.svg
valid_false: check_fail.svg
edit: edit.svg
important_warn: red_warn.svg
person: person_add.svg
database: database.svg
icons: icons.svg
api: api.svg
print: print.svg
db_search: db_search.svg

View File

@@ -42,9 +42,9 @@ class Database:
def __post_init__(self): def __post_init__(self):
if isinstance(self.path, str): if isinstance(self.path, str):
self.path = Path(self.path) self.path = Path(self.path).expanduser()
if isinstance(self.temp, str): if isinstance(self.temp, str):
self.temp = Path(self.temp) self.temp = Path(self.temp).expanduser()
@dataclass @dataclass
class Mail: class Mail:
@@ -137,7 +137,7 @@ class Config:
""" """
_config: Optional[DictConfig] = None _config: Optional[DictConfig] = None
config_exists: bool = True
def __init__(self, config_path: str): def __init__(self, config_path: str):
""" """
Loads the configuration file and stores it for future access. Loads the configuration file and stores it for future access.
@@ -157,9 +157,14 @@ class Config:
base_config = base_file.read() base_config = base_file.read()
with open(config_path, "w") as config_file: with open(config_path, "w") as config_file:
config_file.write(base_config) config_file.write(base_config)
self.config_exists = False
self._config = OmegaConf.load(config_path) self._config = OmegaConf.load(config_path)
self.config_path = config_path self.config_path = config_path
@property
def exists(self) -> bool:
return self.config_exists
def save(self): def save(self):
""" """
Saves the current configuration to the file. Saves the current configuration to the file.
@@ -169,6 +174,12 @@ class Config:
""" """
OmegaConf.save(self._config, self.config_path) OmegaConf.save(self._config, self.config_path)
def reload(self):
"""
Reloads the configuration from the file.
"""
self._config = OmegaConf.load(self.config_path)
@property @property
def zotero(self): def zotero(self):
return Zotero(**self._config.zotero) return Zotero(**self._config.zotero)

View File

@@ -1,11 +1,14 @@
__version__ = "0.2.1" __version__ = "0.2.1"
__author__ = "Alexander Kirchner" __author__ = "Alexander Kirchner"
__all__ = ["__version__", "__author__", "Icon", "settings"] __all__ = ["__version__", "__author__", "Icon", "settings"]
import os import os
from config import Config
from appdirs import AppDirs from appdirs import AppDirs
from config import Config
app = AppDirs("SemesterApparatsManager", "SAM") app = AppDirs("SemesterApparatsManager", "SAM")
LOG_DIR = app.user_log_dir LOG_DIR = app.user_log_dir
CONFIG_DIR = app.user_config_dir CONFIG_DIR = app.user_config_dir
@@ -16,6 +19,7 @@ if not os.path.exists(CONFIG_DIR):
settings = Config(f"{CONFIG_DIR}/config.yaml") settings = Config(f"{CONFIG_DIR}/config.yaml")
first_launch = settings.exists
if not os.path.exists(settings.database.temp.expanduser()): if not os.path.exists(settings.database.temp.expanduser()):
settings.database.temp.expanduser().mkdir(parents=True, exist_ok=True) settings.database.temp.expanduser().mkdir(parents=True, exist_ok=True)
from .utils.icon import Icon from .utils.icon import Icon

View File

@@ -0,0 +1,51 @@
from .widget_sources.welcome_wizard_ui import Ui_Wizard
from PyQt6 import QtWidgets, QtCore, QtGui
from src import settings
class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.btn_database.clicked.connect(self.open_database_settings)
self.btn_temp.clicked.connect(self.open_temp_settings)
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.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)
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])
def open_temp_settings(self):
#open filepicker dialog to select temporary directory
dir_dialog = QtWidgets.QFileDialog(self, "Select Temporary Directory")
dir_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory)
dir_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.List)
if dir_dialog.exec():
selected_dirs = dir_dialog.selectedFiles()
if selected_dirs:
# Do something with the selected temporary directory
print("Selected temporary directory:", selected_dirs[0])
def launch_wizard():
"""Launch the welcome wizard."""
app = QtWidgets.QApplication.instance()
if not app:
app = QtWidgets.QApplication([])
wizard = WelcomeWizard()
# wizard.setWindowTitle("Welcome to the Semester Apparatus Manager")
# wizard.setWindowIcon(settings.Icon("welcome").icon)
wizard.setWizardStyle(QtWidgets.QWizard.WizardStyle.ModernStyle)
wizard.setStartId(0)
wizard.show()
return wizard.exec()

View File

@@ -0,0 +1,348 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Wizard</class>
<widget class="QWizard" name="Wizard">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>564</width>
<height>425</height>
</rect>
</property>
<property name="windowTitle">
<string>Wizard</string>
</property>
<property name="sizeGripEnabled">
<bool>false</bool>
</property>
<property name="wizardStyle">
<enum>QWizard::ClassicStyle</enum>
</property>
<property name="subTitleFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="currentId">
<number>0</number>
</property>
<widget class="QWizardPage" name="wizardPage1">
<property name="title">
<string>Willkommen</string>
</property>
<property name="subTitle">
<string/>
</property>
<attribute name="pageId">
<string notr="true">0</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTextEdit" name="textEdit">
<property name="enabled">
<bool>false</bool>
</property>
<property name="lineWidth">
<number>0</number>
</property>
<property name="autoFormatting">
<set>QTextEdit::AutoAll</set>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
<property name="html">
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;meta charset=&quot;utf-8&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
hr { height: 1px; border-width: 0; }
li.unchecked::marker { content: &quot;\2610&quot;; }
li.checked::marker { content: &quot;\2612&quot;; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Segoe UI'; font-size:9pt; font-weight:400; font-style:normal;&quot;&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;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:&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;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;- Datenbank&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;- 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>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizardPage2">
<property name="title">
<string>Datenbank</string>
</property>
<property name="subTitle">
<string>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</string>
</property>
<attribute name="pageId">
<string notr="true">1</string>
</attribute>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>Datenbank</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="settings_database">
<property name="placeholderText">
<string>semesterapparate.db</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QToolButton" name="btn_database">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Temporäre Daten</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="settings_temp">
<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>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizardPage3">
<property name="title">
<string>Mail</string>
</property>
<property name="subTitle">
<string>Hier werden die Einstellungen für die Mailverbindung eingegeben</string>
</property>
<attribute name="pageId">
<string notr="true">2</string>
</attribute>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>SMTP Server</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_3"/>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_4"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Nutzername</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>SMTP Port</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>Passwort</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QCheckBox" name="settings_mail_use_user_name">
<property name="text">
<string>CheckBox</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="QLineEdit" name="settings_mail_"/>
</item>
<item row="7" column="0">
<widget class="QLabel" name="label_8">
<property name="text">
<string>Druckermail</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_9">
<property name="text">
<string>Nutzername
für SMTP</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QTextEdit" name="textEdit_2"/>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Signatur</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Mail Adresse</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_5"/>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizardPage4">
<property name="title">
<string>Zotero</string>
</property>
<property name="subTitle">
<string>Hier werden die Einstellungen für Zotero verwaltet</string>
</property>
<attribute name="pageId">
<string notr="true">3</string>
</attribute>
<layout class="QFormLayout" name="formLayout_2">
<item row="0" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>API-Key</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="settings_zotero_api_key"/>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="settings_zotero_library_id"/>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>ID</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Anwendungstyp</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="settings_zotero_library_type">
<property name="text">
<string>user</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWizardPage" name="wizardPage5">
<property name="title">
<string>KI-Integration</string>
</property>
<property name="subTitle">
<string>Hier werden die Einstellungen für die KI Integration eingestellt.</string>
</property>
<attribute name="pageId">
<string notr="true">9</string>
</attribute>
<layout class="QFormLayout" name="formLayout_3">
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_6"/>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_14">
<property name="text">
<string>API Key</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_15">
<property name="text">
<string>ChatGPT Modell</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QComboBox" name="comboBox">
<property name="currentText">
<string>gpt-4o-mini</string>
</property>
<item>
<property name="text">
<string>gpt3.5-turbo</string>
</property>
</item>
<item>
<property name="text">
<string>gpt-4</string>
</property>
</item>
<item>
<property name="text">
<string>gpt-4o</string>
</property>
</item>
<item>
<property name="text">
<string>gpt-4o-mini</string>
</property>
</item>
<item>
<property name="text">
<string>gpt-4.1</string>
</property>
</item>
<item>
<property name="text">
<string>gpt-4.1-mini</string>
</property>
</item>
<item>
<property name="text">
<string>gpt-4.1-nano</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</widget>
<resources/>
<connections/>
</ui>

View File

@@ -0,0 +1,215 @@
# 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
#
# 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
class Ui_Wizard(object):
def setupUi(self, Wizard):
Wizard.setObjectName("Wizard")
Wizard.resize(564, 425)
Wizard.setSizeGripEnabled(False)
Wizard.setWizardStyle(QtWidgets.QWizard.WizardStyle.ClassicStyle)
Wizard.setSubTitleFormat(QtCore.Qt.TextFormat.PlainText)
Wizard.setCurrentId(0)
self.wizardPage1 = QtWidgets.QWizardPage()
self.wizardPage1.setSubTitle("")
self.wizardPage1.setObjectName("wizardPage1")
self.verticalLayout = QtWidgets.QVBoxLayout(self.wizardPage1)
self.verticalLayout.setObjectName("verticalLayout")
self.textEdit = QtWidgets.QTextEdit(parent=self.wizardPage1)
self.textEdit.setEnabled(False)
self.textEdit.setLineWidth(0)
self.textEdit.setAutoFormatting(QtWidgets.QTextEdit.AutoFormattingFlag.AutoAll)
self.textEdit.setReadOnly(True)
self.textEdit.setObjectName("textEdit")
self.verticalLayout.addWidget(self.textEdit)
Wizard.addPage(self.wizardPage1)
self.wizardPage2 = QtWidgets.QWizardPage()
self.wizardPage2.setObjectName("wizardPage2")
self.gridLayout = QtWidgets.QGridLayout(self.wizardPage2)
self.gridLayout.setObjectName("gridLayout")
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.setObjectName("settings_database")
self.gridLayout.addWidget(self.settings_database, 0, 1, 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)
Wizard.addPage(self.wizardPage2)
self.wizardPage3 = QtWidgets.QWizardPage()
self.wizardPage3.setObjectName("wizardPage3")
self.formLayout = QtWidgets.QFormLayout(self.wizardPage3)
self.formLayout.setObjectName("formLayout")
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.label_4 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_4.setObjectName("label_4")
self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_4)
self.label_5 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_5.setObjectName("label_5")
self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_5)
self.label_6 = QtWidgets.QLabel(parent=self.wizardPage3)
self.label_6.setObjectName("label_6")
self.formLayout.setWidget(4, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_6)
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.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.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)
Wizard.addPage(self.wizardPage3)
self.wizardPage4 = QtWidgets.QWizardPage()
self.wizardPage4.setObjectName("wizardPage4")
self.formLayout_2 = QtWidgets.QFormLayout(self.wizardPage4)
self.formLayout_2.setObjectName("formLayout_2")
self.label_11 = QtWidgets.QLabel(parent=self.wizardPage4)
self.label_11.setObjectName("label_11")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_11)
self.settings_zotero_api_key = QtWidgets.QLineEdit(parent=self.wizardPage4)
self.settings_zotero_api_key.setObjectName("settings_zotero_api_key")
self.formLayout_2.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_zotero_api_key)
self.settings_zotero_library_id = QtWidgets.QLineEdit(parent=self.wizardPage4)
self.settings_zotero_library_id.setObjectName("settings_zotero_library_id")
self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_zotero_library_id)
self.label_12 = QtWidgets.QLabel(parent=self.wizardPage4)
self.label_12.setObjectName("label_12")
self.formLayout_2.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_12)
self.label_13 = QtWidgets.QLabel(parent=self.wizardPage4)
self.label_13.setObjectName("label_13")
self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_13)
self.settings_zotero_library_type = QtWidgets.QLineEdit(parent=self.wizardPage4)
self.settings_zotero_library_type.setObjectName("settings_zotero_library_type")
self.formLayout_2.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_zotero_library_type)
Wizard.addPage(self.wizardPage4)
self.wizardPage5 = QtWidgets.QWizardPage()
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.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)
Wizard.addPage(self.wizardPage5)
self.retranslateUi(Wizard)
QtCore.QMetaObject.connectSlotsByName(Wizard)
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.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.settings_temp.setPlaceholderText(_translate("Wizard", "C:\\Users\\[Nutzer]\\AppData\\Local\\SAM\\SemesterApparatsManager\\Cache"))
self.btn_temp.setText(_translate("Wizard", "..."))
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.label_4.setText(_translate("Wizard", "Nutzername"))
self.label_5.setText(_translate("Wizard", "SMTP Port"))
self.label_6.setText(_translate("Wizard", "Passwort"))
self.settings_mail_use_user_name.setText(_translate("Wizard", "CheckBox"))
self.label_8.setText(_translate("Wizard", "Druckermail"))
self.label_9.setText(_translate("Wizard", "Nutzername\n"
"für SMTP"))
self.label_10.setText(_translate("Wizard", "Signatur"))
self.label_7.setText(_translate("Wizard", "Mail Adresse"))
self.wizardPage4.setTitle(_translate("Wizard", "Zotero"))
self.wizardPage4.setSubTitle(_translate("Wizard", "Hier werden die Einstellungen für Zotero verwaltet"))
self.label_11.setText(_translate("Wizard", "API-Key"))
self.label_12.setText(_translate("Wizard", "ID"))
self.label_13.setText(_translate("Wizard", "Anwendungstyp"))
self.settings_zotero_library_type.setText(_translate("Wizard", "user"))
self.wizardPage5.setTitle(_translate("Wizard", "KI-Integration"))
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"))