# # !/home/linuxero/proj/tero/pyqcrm/.qtcreator/venv-3.13.1/bin/python3 import os import sys import logging from PySide6.QtNetwork import QLocalServer, QLocalSocket from PySide6.QtWidgets import QSystemTrayIcon from PySide6.QtGui import QGuiApplication, QIcon from PySide6.QtQml import QQmlApplicationEngine from PySide6.QtCore import QIODevice #, 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() pyq_sok = QLocalSocket() pyq_sok.connectToServer("PYQCRM_INSTANCE", QIODevice.ReadOnly) if pyq_sok.state() == QLocalSocket.ConnectedState: print("PYQCRM already running..") print("Stop the running instance before running the application..") sys.exit(-1) else: print("Starting PYQCRM_INSTANCE") pyq_server = QLocalServer() pyq_server.listen("PYQCRM_INSTANCE") 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())