various changes, new dialogs
This commit is contained in:
@@ -51,9 +51,9 @@ from src.ui import (
|
||||
parsed_titles_ui,
|
||||
popus_confirm,
|
||||
reminder_ui,
|
||||
SearchStatisticPage,
|
||||
)
|
||||
from src.ui.widgets.searchPage import SearchStatisticPage
|
||||
|
||||
from src.ui.extensions import ValidatorButton
|
||||
config = OmegaConf.load("config.yaml")
|
||||
|
||||
|
||||
@@ -72,12 +72,6 @@ class Medien(medienadder_ui):
|
||||
return self.comboBox.currentText()
|
||||
|
||||
|
||||
class MyComboBox(QtWidgets.QComboBox):
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
|
||||
valid_input = (0, 0, 0, 0, 0, 0)
|
||||
|
||||
|
||||
@@ -100,7 +94,7 @@ class Ui(Ui_Semesterapparat):
|
||||
self.btn_check_file_threaded
|
||||
) # default: self.add_media_from_file
|
||||
self.create_new_app.clicked.connect(self.btn_create_new_apparat)
|
||||
self.btn_apparat_save.clicked.connect(self.btn_save_apparat)
|
||||
self.btn_apparat_save.clicked.connect(lambda: self.btn_save_apparat(True))
|
||||
self.btn_apparat_apply.clicked.connect(self.update_apparat)
|
||||
self.btn_open_document.clicked.connect(self.open_document)
|
||||
self.add_medium.clicked.connect(self.btn_add_medium)
|
||||
@@ -143,19 +137,32 @@ class Ui(Ui_Semesterapparat):
|
||||
)
|
||||
)
|
||||
self.prof_tel_nr.setValidator(QtGui.QIntValidator())
|
||||
# set the validator for the app name, allow all letters and umlauts
|
||||
self.app_fach.setValidator(
|
||||
|
||||
# set app_fach validator to allow only entries from the present items in self.app_fach and allow manual text entry
|
||||
# self.app_fach.setValidator(
|
||||
# QtGui.QRegularExpressionValidator(
|
||||
# QtCore.QRegularExpression(
|
||||
# "|".join([f"{subject[1]}" for subject in self.db.getSubjects()])
|
||||
# )
|
||||
# )
|
||||
# )
|
||||
self.app_fach.setValidator( # validator to allow typing in the app_fach field
|
||||
QtGui.QRegularExpressionValidator(
|
||||
QtCore.QRegularExpression(r"[a-zA-Z\s\W]+")
|
||||
QtCore.QRegularExpression(r"[a-zA-Z0-9\s\W]+")
|
||||
)
|
||||
)
|
||||
self.prof_tel_nr.setValidator(
|
||||
QtGui.QRegularExpressionValidator(
|
||||
QtCore.QRegularExpression(r"^\d{3}|^\d{4}-\d{2}|^\+\d{8,}")
|
||||
)
|
||||
)
|
||||
|
||||
# allow only letters, numbers, whitespaces, symbols for the apparat name
|
||||
self.app_name.setValidator(
|
||||
QtGui.QRegularExpressionValidator(
|
||||
QtCore.QRegularExpression(r"[a-zA-Z0-9\s\W]+")
|
||||
)
|
||||
)
|
||||
|
||||
self.tableWidget_apparate.addScrollBarWidget(
|
||||
QtWidgets.QScrollBar(), QtCore.Qt.AlignmentFlag.AlignRight
|
||||
)
|
||||
@@ -243,7 +250,11 @@ class Ui(Ui_Semesterapparat):
|
||||
self.tableWidget_apparat_media.customContextMenuRequested.connect(
|
||||
self.media_context_menu
|
||||
)
|
||||
self.table_elsa_list.setContextMenuPolicy(
|
||||
QtCore.Qt.ContextMenuPolicy.CustomContextMenu
|
||||
)
|
||||
|
||||
self.table_elsa_list.customContextMenuRequested.connect(self.elsa_context_menu)
|
||||
# elsa buttons
|
||||
self.elsa_add_new.clicked.connect(self.add_new_elsa)
|
||||
self.elsa_cancel_create.clicked.connect(self.cancel_elsa_creation)
|
||||
@@ -269,13 +280,17 @@ class Ui(Ui_Semesterapparat):
|
||||
self.mail_thread = None
|
||||
self.autoGrabber = None
|
||||
|
||||
def elsa_context_menu(self, position):
|
||||
menu = QtWidgets.QMenu()
|
||||
# TODO: add functions
|
||||
pass
|
||||
|
||||
def toggleButton(self, button):
|
||||
if button.isChecked():
|
||||
button.setChecked(False)
|
||||
|
||||
def open_about(self):
|
||||
about = About()
|
||||
about.exec()
|
||||
About().exec()
|
||||
|
||||
def quit(self):
|
||||
# delete all temporary files
|
||||
@@ -316,7 +331,7 @@ class Ui(Ui_Semesterapparat):
|
||||
or self.elsa_date.text() == ""
|
||||
):
|
||||
# warning message
|
||||
self.confirm_popup("Bitte füllen Sie alle Felder aus")
|
||||
self.confirm_popup("Bitte füllen Sie alle Felder aus", title="Fehler")
|
||||
|
||||
return
|
||||
prof = self.elsa_prof.currentText()
|
||||
@@ -391,7 +406,7 @@ class Ui(Ui_Semesterapparat):
|
||||
self.table_elsa_list.setItem(0, 1, QtWidgets.QTableWidgetItem(scan[2]))
|
||||
self.table_elsa_list.setItem(0, 2, QtWidgets.QTableWidgetItem(scan[3]))
|
||||
self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(scan[4]))
|
||||
|
||||
self.create_frame_elsa.setEnabled(True)
|
||||
def addDokumentElsa(self):
|
||||
print("Add document")
|
||||
picker = FilePicker()
|
||||
@@ -447,11 +462,15 @@ class Ui(Ui_Semesterapparat):
|
||||
self.table_elsa_list.insertRow(0)
|
||||
ic(row)
|
||||
chapter_title = row[2]
|
||||
author = row[0]
|
||||
book_author = row[3]
|
||||
book_title = row[4]
|
||||
signature = row[7]
|
||||
pages = row[6]
|
||||
data = {
|
||||
"chapter": chapter_title,
|
||||
"book_author": book_author,
|
||||
"text_author": author,
|
||||
"title": book_title,
|
||||
"signature": signature,
|
||||
"pages": pages,
|
||||
@@ -459,13 +478,17 @@ class Ui(Ui_Semesterapparat):
|
||||
self.table_elsa_list.setItem(
|
||||
0, 0, QtWidgets.QTableWidgetItem(chapter_title)
|
||||
)
|
||||
self.table_elsa_list.setItem(0, 1, QtWidgets.QTableWidgetItem(author))
|
||||
self.table_elsa_list.setItem(
|
||||
0, 1, QtWidgets.QTableWidgetItem(book_title)
|
||||
0, 2, QtWidgets.QTableWidgetItem(book_title)
|
||||
)
|
||||
self.table_elsa_list.setItem(
|
||||
0, 2, QtWidgets.QTableWidgetItem(signature)
|
||||
0, 3, QtWidgets.QTableWidgetItem(signature)
|
||||
)
|
||||
self.table_elsa_list.setItem(0, 4, QtWidgets.QTableWidgetItem(pages))
|
||||
self.table_elsa_list.setItem(
|
||||
0, 5, QtWidgets.QTableWidgetItem(book_author)
|
||||
)
|
||||
self.table_elsa_list.setItem(0, 3, QtWidgets.QTableWidgetItem(pages))
|
||||
self.db.addElsaMedia(
|
||||
data,
|
||||
self.db.getElsaId(
|
||||
@@ -506,7 +529,6 @@ class Ui(Ui_Semesterapparat):
|
||||
# documentation.show()
|
||||
|
||||
def tabW1_changed(self):
|
||||
|
||||
if self.tabWidget.currentIndex() == 1: # Statistics
|
||||
stats_layout = self.search_statistics.layout()
|
||||
if stats_layout is not None:
|
||||
@@ -874,16 +896,8 @@ class Ui(Ui_Semesterapparat):
|
||||
popup.exec()
|
||||
return popup.result()
|
||||
|
||||
def threads(self):
|
||||
while True:
|
||||
self.validate_prof_mail()
|
||||
self.validate_prof_name()
|
||||
self.validate_prof_tel()
|
||||
self.validate_app_name()
|
||||
self.validate_app_fach()
|
||||
self.validate_semester()
|
||||
|
||||
def thread_check(self):
|
||||
print("Thread started")
|
||||
self.prof_mail.textChanged.connect(self.validate_prof_mail)
|
||||
self.drpdwn_prof_name.editTextChanged.connect(self.validate_prof_name)
|
||||
self.prof_tel_nr.textChanged.connect(self.validate_prof_tel)
|
||||
@@ -892,84 +906,70 @@ class Ui(Ui_Semesterapparat):
|
||||
self.sem_year.textChanged.connect(self.validate_semester)
|
||||
self.check_eternal_app.stateChanged.connect(self.validate_semester)
|
||||
|
||||
def validate_prof_name(self):
|
||||
if self.app_group_box.isEnabled():
|
||||
if "," in self.drpdwn_prof_name.currentText():
|
||||
Icon("valid_true", self.valid_check_profname)
|
||||
self.profname_mand.setText("")
|
||||
self.change_state(0, 1)
|
||||
else:
|
||||
Icon("valid_false", self.valid_check_profname)
|
||||
self.profname_mand.setText("*")
|
||||
self.change_state(0, 0)
|
||||
else:
|
||||
pass
|
||||
# self.drpdwn_prof_name.setStyleSheet("border: 1px solid black;")
|
||||
# else:
|
||||
# pass
|
||||
# # self.drpdwn_prof_name.setStyleSheet("border: 1px solid black;")
|
||||
|
||||
# Validators
|
||||
def __setValidState(self, widget, state, mand, index):
|
||||
if state:
|
||||
Icon("valid_true", widget)
|
||||
mand.setText("")
|
||||
self.change_state(index, 1)
|
||||
else:
|
||||
Icon("valid_false", widget)
|
||||
mand.setText("*")
|
||||
self.change_state(index, 0)
|
||||
def validate_prof_name(self):
|
||||
if (
|
||||
self.app_group_box.isEnabled()
|
||||
and "," in self.drpdwn_prof_name.currentText()
|
||||
):
|
||||
self.__setValidState(self.valid_check_profname, 1, self.profname_mand, 0)
|
||||
else:
|
||||
self.__setValidState(self.valid_check_profname, 0, self.profname_mand, 0)
|
||||
def validate_prof_mail(self):
|
||||
if self.app_group_box.isEnabled():
|
||||
if self.prof_mail.hasAcceptableInput():
|
||||
Icon("valid_true", self.valid_check_mail)
|
||||
self.mail_mand.setText("")
|
||||
self.change_state(1, 1)
|
||||
self.__setValidState(self.valid_check_mail, 1, self.mail_mand, 1)
|
||||
else:
|
||||
Icon("valid_false", self.valid_check_mail)
|
||||
self.mail_mand.setText("*")
|
||||
self.change_state(1, 0)
|
||||
|
||||
self.__setValidState(self.valid_check_mail, 0, self.mail_mand, 1)
|
||||
else:
|
||||
self.__setValidState(self.valid_check_mail, 0, self.mail_mand, 1)
|
||||
def validate_prof_tel(self):
|
||||
if self.app_group_box.isEnabled():
|
||||
if self.prof_tel_nr.text() != "":
|
||||
Icon("valid_true", self.valid_check_telnr)
|
||||
self.telnr_mand.setText("")
|
||||
self.change_state(2, 1)
|
||||
if self.prof_tel_nr.text() != "" and self.prof_tel_nr.hasAcceptableInput():
|
||||
self.__setValidState(self.valid_check_telnr, 1, self.telnr_mand, 2)
|
||||
else:
|
||||
Icon("valid_false", self.valid_check_telnr)
|
||||
self.telnr_mand.setText("*")
|
||||
self.change_state(2, 0)
|
||||
|
||||
self.__setValidState(self.valid_check_telnr, 0, self.telnr_mand, 2)
|
||||
else:
|
||||
self.__setValidState(self.valid_check_telnr, 0, self.telnr_mand, 2)
|
||||
def validate_app_name(self):
|
||||
if self.app_group_box.isEnabled():
|
||||
if self.app_name.hasAcceptableInput():
|
||||
Icon("valid_true", self.valid_check_appname)
|
||||
self.appname_mand.setText("")
|
||||
self.change_state(3, 1)
|
||||
else:
|
||||
Icon("valid_false", self.valid_check_appname)
|
||||
self.appname_mand.setText("*")
|
||||
self.change_state(3, 0)
|
||||
|
||||
if self.app_group_box.isEnabled() and self.app_name.hasAcceptableInput():
|
||||
self.__setValidState(self.valid_check_appname, 1, self.appname_mand, 3)
|
||||
else:
|
||||
self.__setValidState(self.valid_check_appname, 0, self.appname_mand, 3)
|
||||
def validate_app_fach(self):
|
||||
if self.app_group_box.isEnabled():
|
||||
if self.app_fach.currentText() != "":
|
||||
# change color to green to signal that the field is filled
|
||||
Icon("valid_true", self.valid_check_app_fach)
|
||||
self.valid_check_app_fach.setToolTip("Fach ist gesetzt")
|
||||
self.fach_mand.setText("")
|
||||
self.change_state(4, 1)
|
||||
else:
|
||||
# self.app_fach.setStyleSheet("border: 1px solid red;")
|
||||
Icon("valid_false", self.valid_check_app_fach)
|
||||
self.valid_check_app_fach.setToolTip("Fach ist nicht gesetzt")
|
||||
self.fach_mand.setText("*")
|
||||
self.change_state(4, 0)
|
||||
if self.app_group_box.isEnabled() and self.app_fach.currentText() != "":
|
||||
self.__setValidState(self.valid_check_app_fach, 1, self.fach_mand, 4)
|
||||
else:
|
||||
self.__setValidState(self.valid_check_app_fach, 0, self.fach_mand, 4)
|
||||
|
||||
def validate_semester(self):
|
||||
if self.app_group_box.isEnabled():
|
||||
if (
|
||||
if (
|
||||
self.app_group_box.isEnabled()
|
||||
and (
|
||||
(self.sem_sommer.isChecked() or self.sem_winter.isChecked())
|
||||
and self.sem_year.text() != ""
|
||||
and len(self.sem_year.text()) == 4
|
||||
) or self.check_eternal_app.isChecked():
|
||||
self._mand.setText("")
|
||||
self.change_state(5, 1)
|
||||
self.check_eternal_app.setEnabled(True)
|
||||
Icon("valid_true", self.valid_check_semester)
|
||||
else:
|
||||
self._mand.setText("*")
|
||||
self.change_state(5, 0)
|
||||
Icon("valid_false", self.valid_check_semester)
|
||||
self.check_eternal_app.setEnabled(False)
|
||||
)
|
||||
or self.check_eternal_app.isChecked()
|
||||
):
|
||||
self.__setValidState(self.valid_check_semester, 1, self._mand, 5)
|
||||
self.check_eternal_app.setEnabled(True)
|
||||
else:
|
||||
self.__setValidState(self.valid_check_semester, 0, self._mand, 5)
|
||||
self.check_eternal_app.setEnabled(False)
|
||||
|
||||
def change_state(self, index, state):
|
||||
global valid_input
|
||||
@@ -1227,6 +1227,12 @@ class Ui(Ui_Semesterapparat):
|
||||
|
||||
for child in self.app_group_box.findChildren(QtWidgets.QLineEdit):
|
||||
child.clear()
|
||||
self.validate_app_fach()
|
||||
self.validate_app_name()
|
||||
self.validate_prof_mail()
|
||||
self.validate_prof_name()
|
||||
self.validate_prof_tel()
|
||||
self.validate_semester()
|
||||
|
||||
def update_app_media_list(self):
|
||||
deleted = 0 if not self.chkbx_show_del_media.isChecked() else 1
|
||||
@@ -1630,6 +1636,7 @@ class Ui(Ui_Semesterapparat):
|
||||
apparat=appd.appnr, mail="Information zum Semesterapparat", location=""
|
||||
)
|
||||
if clear_fields:
|
||||
print("clearing fields")
|
||||
self.__clear_fields()
|
||||
|
||||
def send_mail_preview(self):
|
||||
@@ -1930,6 +1937,7 @@ class Ui(Ui_Semesterapparat):
|
||||
profname = pid
|
||||
|
||||
profname = f"{profname.split(" ")[1]} {profname.split(" ")[0]}"
|
||||
print(profname, pid)
|
||||
if prof_id:
|
||||
pmail = self.db.getSpecificProfData(prof_id, ["mail"])
|
||||
else:
|
||||
@@ -1955,10 +1963,7 @@ class Ui(Ui_Semesterapparat):
|
||||
"Bitte erst einen Apparat auswählen!", title="Apparat auswählen"
|
||||
)
|
||||
return
|
||||
else:
|
||||
self.__contact_dialog(apparat, location, mail, pid=pid)
|
||||
else:
|
||||
self.__contact_dialog(apparat, mail=mail, pid=pid, location=location)
|
||||
self.__contact_dialog(apparat, mail=mail, pid=pid, location=location)
|
||||
|
||||
def delete_apparat(self, position):
|
||||
selected_apparat_id = self.tableWidget_apparate.item(
|
||||
|
||||
Reference in New Issue
Block a user