134 lines
4.0 KiB
Python
134 lines
4.0 KiB
Python
# # !/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
|
|
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__":
|
|
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 = "qrc:/Gui/main.qml"
|
|
|
|
icon = QIcon(":/images/tero.jpg")
|
|
app.setWindowIcon(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("config", config)
|
|
engine.rootContext().setContextProperty("sys_printers", printers)
|
|
engine.rootContext().setContextProperty("bad_config", bad_config)
|
|
engine.rootContext().setContextProperty("db_con", db_con)
|
|
engine.rootContext().setContextProperty("systray", tray)
|
|
|
|
engine.load(qml_file)
|
|
|
|
if not engine.rootObjects():
|
|
sys.exit(-1)
|
|
sys.exit(app.exec())
|