refactor: clean up unused imports and improve code organization

This commit is contained in:
2025-03-26 10:21:11 +01:00
parent 12d54c78a9
commit f6f9f89354
40 changed files with 90 additions and 102 deletions

View File

@@ -179,7 +179,8 @@ class Database:
log_message = f"Querying database with query {logs_query}, args: {logs_args}" log_message = f"Querying database with query {logs_query}, args: {logs_args}"
# if "INSERT" in query: # if "INSERT" in query:
# log_message = f"Querying database with query {query}" # log_message = f"Querying database with query {query}"
if "INTO user" in query:
log_message = f"Querying database with query {query}"
logger.debug(log_message) logger.debug(log_message)
try: try:
cursor.execute(query, args) cursor.execute(query, args)
@@ -793,6 +794,7 @@ class Database:
"SELECT appnr FROM semesterapparat WHERE deletion_status=0" "SELECT appnr FROM semesterapparat WHERE deletion_status=0"
) )
numbers = [i[0] for i in numbers] numbers = [i[0] for i in numbers]
numbers.sort()
logger.info(f"Currently used apparat numbers: {numbers}") logger.info(f"Currently used apparat numbers: {numbers}")
return numbers return numbers
@@ -962,6 +964,7 @@ class Database:
app_id (Union[str, int]): the id of the apparat app_id (Union[str, int]): the id of the apparat
semester (str): the semester the apparat should be deleted from semester (str): the semester the apparat should be deleted from
""" """
logger.info(f"Deleting apparat with id {app_id} in semester {semester}")
self.query_db( self.query_db(
"UPDATE semesterapparat SET deletion_status=1, deleted_date=? WHERE appnr=?", "UPDATE semesterapparat SET deletion_status=1, deleted_date=? WHERE appnr=?",
(semester, app_id), (semester, app_id),
@@ -1064,7 +1067,6 @@ class Database:
Returns: Returns:
list: the result of the query list: the result of the query
""" """
logger.debug(query)
logger.debug(f"Query: {query}") logger.debug(f"Query: {query}")
conn = self.connect() conn = self.connect()
cursor = conn.cursor() cursor = conn.cursor()
@@ -1086,7 +1088,7 @@ class Database:
WHERE deletion_status=0 AND dauer=0 AND WHERE deletion_status=0 AND dauer=0 AND
( (
(erstellsemester!='{kwargs["deletesemester"]}' AND verlängerung_bis IS NULL) OR (erstellsemester!='{kwargs["deletesemester"]}' AND verlängerung_bis IS NULL) OR
(erstellsemester!='{kwargs["deletesemester"]}' AND verlängerung_bis!='{kwargs["deletesemester"]}' AND verlängerung_bis!='{Semester()}') (erstellsemester!='{kwargs["deletesemester"]}' AND verlängerung_bis!='{kwargs["deletesemester"]}' AND verlängerung_bis!='{Semester().next}')
)""" )"""
return __query(query) return __query(query)
if "dauer" in kwargs.keys(): if "dauer" in kwargs.keys():
@@ -1563,11 +1565,13 @@ class Database:
apprarat_id (int): Number of the apparat apprarat_id (int): Number of the apparat
Returns: Returns:
int | None: The id of the prof or None if not found int | None: The id of the prof or None if not found
""" """
query = f"SELECT prof_id from semesterapparat WHERE id = '{apprarat_id}' and deletion_status = 0" query = f"SELECT prof_id from semesterapparat WHERE appnr = '{apprarat_id}' and deletion_status = 0"
data = self.query_db(query) data = self.query_db(query)
if data: if data:
logger.info("Prof ID: " + str(data[0][0]))
return data[0][0] return data[0][0]
else: else:
return None return None

View File

@@ -1,6 +1,4 @@
# add depend path to system path # add depend path to system path
import os
import sys
import pandas as pd import pandas as pd
from pdfquery import PDFQuery from pdfquery import PDFQuery

View File

@@ -1,6 +1,4 @@
import os import os
import sqlite3
import time
# from icecream import ic # from icecream import ic
from omegaconf import OmegaConf from omegaconf import OmegaConf
@@ -25,7 +23,6 @@ class BackgroundChecker(QThread):
class MockAvailCheck: class MockAvailCheck:
def __init__( def __init__(
self, links: list = None, appnumber: int = None, parent=None, books=list[dict] self, links: list = None, appnumber: int = None, parent=None, books=list[dict]
): ):
@@ -83,7 +80,6 @@ class MockAvailCheck:
class Mailer(Ui_eMailPreview): class Mailer(Ui_eMailPreview):
updateSignal = Signal(int) updateSignal = Signal(int)
def __init__(self, data=None, parent=None): def __init__(self, data=None, parent=None):
@@ -149,7 +145,6 @@ class Mailer(Ui_eMailPreview):
def createAndSendMail(self): def createAndSendMail(self):
import smtplib import smtplib
import ssl
from email.mime.multipart import MIMEMultipart from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText from email.mime.text import MIMEText
@@ -180,7 +175,6 @@ class Mailer(Ui_eMailPreview):
class MailThread(QThread): class MailThread(QThread):
updateSignal = Signal(int) updateSignal = Signal(int)
def __init__(self, data=None, parent=None): def __init__(self, data=None, parent=None):

View File

@@ -1,6 +1,4 @@
import os
import sqlite3 import sqlite3
import threading
import time import time
from PyQt6.QtCore import QThread, pyqtSignal from PyQt6.QtCore import QThread, pyqtSignal
@@ -8,7 +6,6 @@ from PyQt6.QtCore import QThread, pyqtSignal
from src.backend.database import Database from src.backend.database import Database
from src.logic.log import MyLogger from src.logic.log import MyLogger
from src.logic.webrequest import BibTextTransformer, WebRequest from src.logic.webrequest import BibTextTransformer, WebRequest
from src.transformers import RDS_AVAIL_DATA
# from icecream import ic # from icecream import ic
@@ -213,7 +210,6 @@ class AutoAdder(QThread):
class MockAvailCheck: class MockAvailCheck:
def __init__( def __init__(
self, links: list = None, appnumber: int = None, parent=None, books=list[dict] self, links: list = None, appnumber: int = None, parent=None, books=list[dict]
): ):

View File

@@ -4,9 +4,8 @@ import json
import re import re
from dataclasses import dataclass from dataclasses import dataclass
from dataclasses import field as dataclass_field from dataclasses import field as dataclass_field
from typing import Any, List, Optional from typing import Any, List
from pydantic import BaseModel, Field
from src.logic.dataclass import BookData from src.logic.dataclass import BookData
@@ -171,13 +170,13 @@ class ARRAYData:
) )
signature_data = eval(sig_data) signature_data = eval(sig_data)
return signature_data["signatur"] return signature_data["signatur"]
except Exception as e: except Exception:
return None return None
def _get_author(data): def _get_author(data):
try: try:
array = data.split("[au_display_short]")[1].split(")\n")[0].strip() array = data.split("[au_display_short]")[1].split(")\n")[0].strip()
except Exception as e: except Exception:
return "" return ""
entries = array.split("\n") entries = array.split("\n")
authors = [] authors = []

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_MainWindow(object): class Ui_MainWindow(object):
@@ -44,7 +44,9 @@ class Ui_MainWindow(object):
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.select_action_box.setItemText(0, _translate("MainWindow", "Aktion auswählen")) self.select_action_box.setItemText(
0, _translate("MainWindow", "Aktion auswählen")
)
self.select_action_box.setItemText(1, _translate("MainWindow", "edit_prof")) self.select_action_box.setItemText(1, _translate("MainWindow", "edit_prof"))
self.select_action_box.setItemText(2, _translate("MainWindow", "add_user")) self.select_action_box.setItemText(2, _translate("MainWindow", "add_user"))
self.select_action_box.setItemText(3, _translate("MainWindow", "edit_user")) self.select_action_box.setItemText(3, _translate("MainWindow", "edit_user"))

View File

@@ -2,7 +2,6 @@ from .dialog_sources.Ui_about import Ui_about
from PyQt6 import QtWidgets from PyQt6 import QtWidgets
from PyQt6.QtCore import PYQT_VERSION_STR from PyQt6.QtCore import PYQT_VERSION_STR
from src import Icon, __version__, __author__ from src import Icon, __version__, __author__
from omegaconf import OmegaConf
class About(QtWidgets.QDialog, Ui_about): class About(QtWidgets.QDialog, Ui_about):

View File

@@ -1,7 +1,6 @@
from PyQt6 import QtWidgets from PyQt6 import QtWidgets
from .dialog_sources.Ui_apparat_extend import Ui_Dialog from .dialog_sources.Ui_apparat_extend import Ui_Dialog
from src import Icon from src import Icon
from src.backend import Semester
class ApparatExtendDialog(QtWidgets.QDialog, Ui_Dialog): class ApparatExtendDialog(QtWidgets.QDialog, Ui_Dialog):

View File

@@ -1,9 +1,8 @@
from PyQt6 import QtCore, QtWidgets from PyQt6 import QtWidgets
from src.logic.dataclass import BookData from src.logic.dataclass import BookData
from .dialog_sources.Ui_edit_bookdata import Ui_Dialog from .dialog_sources.Ui_edit_bookdata import Ui_Dialog
from src import Icon
class BookDataUI(QtWidgets.QDialog, Ui_Dialog): class BookDataUI(QtWidgets.QDialog, Ui_Dialog):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore
class Ui_Form(object): class Ui_Form(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_extend_confirm(object): class Ui_extend_confirm(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Erinnerung(object): class Ui_Erinnerung(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
import hashlib import hashlib
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
from src import Icon, logger from src import Icon, logger
from src.backend.admin_console import AdminCommands from src.backend.admin_console import AdminCommands

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

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

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtWidgets
from src import Icon from src import Icon

View File

@@ -906,7 +906,8 @@ class Ui(Ui_Semesterapparat):
).setToolTip("Das Medium wurde nicht im Apparat gefunden") ).setToolTip("Das Medium wurde nicht im Apparat gefunden")
# make table link clickable # make table link clickable
self.tableWidget_apparat_media.itemClicked.connect(self.open_link) #self.tableWidget_apparat_media.itemClicked.connect(self.open_link)
# self.tableWidget_apparat_media.
def open_link(self, item): def open_link(self, item):
def __openLink(link): def __openLink(link):
@@ -924,7 +925,8 @@ class Ui(Ui_Semesterapparat):
if columnname == "Link": if columnname == "Link":
link = __openLink(item.text()) link = __openLink(item.text())
if link is not None: if link is not None:
os.system("start " + link) webbrowser.open(link)
#os.system("start " + link)
return return
else: else:
pass pass

View File

@@ -1,4 +1,4 @@
from PyQt6 import QtWidgets, QtCore, QtGui from PyQt6 import QtWidgets
from PyQt6.QtCore import pyqtSignal from PyQt6.QtCore import pyqtSignal
from .widget_sources.Ui_admin_create_user import Ui_Dialog from .widget_sources.Ui_admin_create_user import Ui_Dialog
from src.backend import AdminCommands, Database from src.backend import AdminCommands, Database

View File

@@ -1,6 +1,5 @@
from .widget_sources.Ui_admin_edit_prof import Ui_Dialog # from .widget_sources.Ui_admin_edit_prof import Ui_Dialog #
from PyQt6 import QtWidgets, QtCore from PyQt6 import QtWidgets
from PyQt6.QtCore import pyqtSignal
from src import logger from src import logger
from src.logic import Prof from src.logic import Prof
from src.backend import Database from src.backend import Database

View File

@@ -1,6 +1,5 @@
from .widget_sources.Ui_admin_edit_user import Ui_Dialog from .widget_sources.Ui_admin_edit_user import Ui_Dialog
from PyQt6 import QtWidgets, QtCore from PyQt6 import QtWidgets
from PyQt6.QtCore import pyqtSignal
from src.backend import Database from src.backend import Database
from src.backend import AdminCommands from src.backend import AdminCommands

View File

@@ -1,6 +1,6 @@
from .widget_sources.Ui_calendar_entry import Ui_Dialog from .widget_sources.Ui_calendar_entry import Ui_Dialog
from PyQt6 import QtWidgets, QtCore from PyQt6 import QtWidgets
from PyQt6.QtCore import pyqtSignal, QDate from PyQt6.QtCore import pyqtSignal
from src.backend.database import Database from src.backend.database import Database
from src import Icon from src import Icon

View File

@@ -134,7 +134,7 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog):
return profs return profs
def elsa_context_menu(self, position): def elsa_context_menu(self, position):
menu = QtWidgets.QMenu() QtWidgets.QMenu()
# TODO: add functions # TODO: add functions
pass pass

View File

@@ -1,6 +1,5 @@
from .widget_sources.Ui_icon_widget import Ui_Dialog from .widget_sources.Ui_icon_widget import Ui_Dialog
from PyQt6 import QtWidgets, QtCore, QtGui from PyQt6 import QtWidgets
from PyQt6.QtCore import Qt
from src import logger from src import logger

View File

@@ -4,7 +4,7 @@ from PyQt6.QtCore import pyqtSignal
from src.backend import Database, Semester from src.backend import Database, Semester
from src import logger from src import logger
from src.logic import custom_sort, Prof, sort_semesters_list from src.logic import custom_sort, Prof, sort_semesters_list
from src.ui.dialogs import Mail_Dialog, ApparatExtendDialog from src.ui.dialogs import Mail_Dialog, ApparatExtendDialog, reminder_ui
from src.ui.widgets import DataGraph, StatusWidget from src.ui.widgets import DataGraph, StatusWidget
from natsort import natsorted from natsort import natsorted
@@ -19,6 +19,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
apparat_open = pyqtSignal(str) apparat_open = pyqtSignal(str)
reloadSignal = pyqtSignal() reloadSignal = pyqtSignal()
refreshSignal = pyqtSignal() refreshSignal = pyqtSignal()
updateCalendar = pyqtSignal(int, list)
def __init__(self): def __init__(self):
logger.info("SearchStatisticPage started") logger.info("SearchStatisticPage started")
@@ -46,7 +47,8 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
self.tableWidget.resizeColumnsToContents() self.tableWidget.resizeColumnsToContents()
self.tableWidget.resizeRowsToContents() self.tableWidget.resizeRowsToContents()
self.db = Database() self.db = Database()
self.box_appnrs.addItems(str(i) for i in self.db.getUnavailableApparatNumbers()) self.appnrs = self.db.getUnavailableApparatNumbers()
self.box_appnrs.addItems(str(i) for i in self.appnrs)
self.splitter = QtWidgets.QSplitter(QtCore.Qt.Orientation.Horizontal) self.splitter = QtWidgets.QSplitter(QtCore.Qt.Orientation.Horizontal)
# insert splitter in apparatResult to allow resizing of the columns # insert splitter in apparatResult to allow resizing of the columns
self.splitter.addWidget(self.app_results) self.splitter.addWidget(self.app_results)
@@ -54,6 +56,8 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
self.apparatResult.layout().removeWidget(self.stats) self.apparatResult.layout().removeWidget(self.stats)
self.apparatResult.layout().removeWidget(self.app_results) self.apparatResult.layout().removeWidget(self.app_results)
self.apparatResult.layout().addWidget(self.splitter) self.apparatResult.layout().addWidget(self.splitter)
# set tableWidget column 0 to be 50px wide
self.tableWidget.setColumnWidth(0, 50)
self.semester = Semester().value self.semester = Semester().value
self.populate_tab() self.populate_tab()
@@ -83,9 +87,12 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
menu = QtWidgets.QMenu() menu = QtWidgets.QMenu()
restore_action = menu.addAction("Wiederherstellen") restore_action = menu.addAction("Wiederherstellen")
extend_action = menu.addAction("Verlängern") extend_action = menu.addAction("Verlängern")
remind_action = menu.addAction("Erinnerung")
menu.addAction(restore_action) menu.addAction(restore_action)
restore_action.triggered.connect(self.restore_apparat) restore_action.triggered.connect(self.restore_apparat)
extend_action.triggered.connect(self.extend_apparat) extend_action.triggered.connect(self.extend_apparat)
remind_action.triggered.connect(self.reminder)
menu.exec(self.tableWidget.mapToGlobal(position)) menu.exec(self.tableWidget.mapToGlobal(position))
def extend_apparat(self): def extend_apparat(self):
@@ -101,6 +108,23 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
self.tableWidget.removeRow(self.tableWidget.currentRow()) self.tableWidget.removeRow(self.tableWidget.currentRow())
self.refreshSignal.emit() self.refreshSignal.emit()
def reminder(self):
logger.info("Opening reminder dialog")
reminder = reminder_ui()
reminder.exec()
tableposition = self.tableWidget.currentRow()
appnr = self.tableWidget.item(tableposition, 2).text()
if reminder.result() == QtWidgets.QDialog.DialogCode.Accepted:
data = reminder.return_message()
# #print(data)
self.db.addMessage(
data,
"admin",
appnr,
)
self.updateCalendar.emit(data)
logger.info("committed message to database")
def tabW2_changed(self): def tabW2_changed(self):
if self.tabWidget_2.currentIndex() == 0: if self.tabWidget_2.currentIndex() == 0:
self.stackedWidget_4.setCurrentIndex(0) self.stackedWidget_4.setCurrentIndex(0)
@@ -228,7 +252,7 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog):
self.box_dauerapp.addItems(["Ja", "Nein", ""]) self.box_dauerapp.addItems(["Ja", "Nein", ""])
self.box_dauerapp.setCurrentText("") self.box_dauerapp.setCurrentText("")
# add custom vaules # add custom vaules
appnrs = self.db.getUnavailableApparatNumbers() appnrs = self.appnrs
apparats = natsorted(appnrs) apparats = natsorted(appnrs)
apparats = [str(apparat) for apparat in apparats] apparats = [str(apparat) for apparat in apparats]
self.box_appnrs.addItems(apparats) self.box_appnrs.addItems(apparats)

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -6,7 +6,7 @@
# run again. Do not edit this file unless you know what you are doing. # run again. Do not edit this file unless you know what you are doing.
from PyQt6 import QtCore, QtGui, QtWidgets from PyQt6 import QtCore, QtWidgets
class Ui_Dialog(object): class Ui_Dialog(object):

View File

@@ -10,43 +10,11 @@
from PyQt6.QtCore import ( from PyQt6.QtCore import (
QCoreApplication, QCoreApplication,
QDate,
QDateTime,
QLocale,
QMetaObject, QMetaObject,
QObject,
QPoint,
QRect,
QSize,
Qt,
QTime,
QUrl,
)
from PyQt6.QtGui import (
QBrush,
QColor,
QConicalGradient,
QCursor,
QFont,
QFontDatabase,
QGradient,
QIcon,
QImage,
QKeySequence,
QLinearGradient,
QPainter,
QPalette,
QPixmap,
QRadialGradient,
QTransform,
) )
from PyQt6.QtWidgets import ( from PyQt6.QtWidgets import (
QApplication,
QDialog,
QGridLayout, QGridLayout,
QSizePolicy,
QTabWidget, QTabWidget,
QWidget,
) )

View File

@@ -0,0 +1,15 @@
import os
import sys
def run_mkdocs():
with open(os.devnull, "w") as devnull:
old_stdout = sys.stdout
old_stderr = sys.stderr
sys.stdout = devnull
sys.stderr = devnull
try:
os.system("mkdocs serve -q")
finally:
sys.stdout = old_stdout
sys.stderr = old_stderr

View File

@@ -2,7 +2,6 @@ import os
import sys import sys
# from PyQt6 import Webview # from PyQt6 import Webview
from PyQt6.QtWebEngineWidgets import QWebEngineView
from PyQt6.QtWidgets import QApplication, QMainWindow, QTabWidget from PyQt6.QtWidgets import QApplication, QMainWindow, QTabWidget
documentation_path = "docs" documentation_path = "docs"
@@ -36,9 +35,8 @@ class DocumentationViewer(QMainWindow):
tab_name="Documentation", tab_name="Documentation",
html_content="<h1>Documentation</h1><p>Your HTML documentation content goes here.</p>", html_content="<h1>Documentation</h1><p>Your HTML documentation content goes here.</p>",
): ):
documentation_tab = QWebEngineView() # open documentation
documentation_tab.setHtml(html_content) name = tab_name
self.tabs.addTab(documentation_tab, tab_name)
if __name__ == "__main__": if __name__ == "__main__":

View File

@@ -1,14 +1,9 @@
from datetime import datetime from datetime import datetime
from docx import Document from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.enum.table import WD_ROW_HEIGHT_RULE from docx.shared import Pt, RGBColor, Cm
from docx.shared import Pt, RGBColor, Cm, Inches
from docx.oxml import OxmlElement from docx.oxml import OxmlElement
from docx.oxml.ns import qn from docx.oxml.ns import qn
from docx2pdf import convert
import win32print
import win32api
import tempfile
import os import os
from os.path import basename from os.path import basename