Files
pyqcrm/main.py

121 lines
3.7 KiB
Python

# # !/home/linuxero/proj/tero/pyqcrm/.qtcreator/venv-3.13.1/bin/python3
import os
import sys
import logging
from PySide6.QtWidgets import QSystemTrayIcon
from PySide6.QtGui import QGuiApplication, QIcon
from PySide6.QtQml import QQmlApplicationEngine
#from PySide6.QtCore import QResource
from lib.ConfigLoader import ConfigLoader
from lib.DB.BusinessModel import BusinessModel
import rc_pyqcrm
import rc_qml
from lib.DB.DbManager import DbManager
from lib.DB.UserManager import UserManager
from lib.DB.AddressModel import AddressModel
from lib.DB.BTypeModel import BTypeModel
from lib.DB.ContactModel import ContactModel
from lib.DB.EmployeeModel import EmployeeModel
from lib.DB.ObjectModel import ObjectModel
from lib.Printers import Printers
os.environ['QML_XHR_ALLOW_FILE_READ'] = '1'
# [pyqcrm]
# program-name=""
# version=
# [database]
# server=""
# port=
# user=""
# password=""
# name=""
# type=""
bad_config = False
db_con = False
address_model = None
business_model = None
business_type = None
contact_model = None
employee_model = None
object_model = None
printers = None
user = None
def initializeProgram():
print(f"In {__file__} file, initializeProgram()")
global address_model, bad_config, business_model, user, business_type, contact_model, employee_model, object_model, db_con, printers
if not bad_config:
dbconf = config.getConfig()['database']
DbManager(dbconf)
printers = Printers()
if DbManager().getConnection():
db_con = True
user = UserManager()
business_model = BusinessModel()
address_model = AddressModel()
business_type = BTypeModel()
contact_model = ContactModel()
employee_model = EmployeeModel()
object_model = ObjectModel()
publishContext()
def configReady():
global bad_config
bad_config = False
initializeProgram()
def publishContext():
# print(f"In {__file__} file, publishContext()")
global engine, address_model, bad_config, business_model, user, business_type, contact_model, object_model, employee_model, printers
engine.rootContext().setContextProperty("loggedin_user", user)
engine.rootContext().setContextProperty("business_model", business_model)
engine.rootContext().setContextProperty("address_model", address_model)
engine.rootContext().setContextProperty("business_type", business_type)
engine.rootContext().setContextProperty("contact_model", contact_model)
engine.rootContext().setContextProperty("employee_model", employee_model)
engine.rootContext().setContextProperty("object_model", object_model)
if __name__ == "__main__":
#QResource.registerResource("rc_qml.py")
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.addImportPath("qrc:/");
# qml_file = Path(__file__).resolve().parent / "Gui/main.qml"
qml_file = "qrc:/Gui/main.qml"
icon = QIcon(":/images/tero.jpg")
app.setWindowIcon(QIcon(icon))
tray = QSystemTrayIcon()
tray.setIcon(icon)
tray.setToolTip("PYQCRM")
config = ConfigLoader()
if not config.getConfig():
bad_config = True
config.configurationReady.connect(configReady)
else:
initializeProgram()
engine.rootContext().setContextProperty("sys_printers", printers)
engine.rootContext().setContextProperty("bad_config", bad_config) # print(f"Fehler: {i}")
engine.rootContext().setContextProperty("db_con", db_con)
engine.rootContext().setContextProperty("config", config)
engine.rootContext().setContextProperty("systray", tray)
engine.load(qml_file)
if not engine.rootObjects():
sys.exit(-1)
sys.exit(app.exec())