presik_pos/pospro

88 lines
2.6 KiB
Python
Executable File

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import os
import sys
import argparse
import setproctitle
import psutil
import ctypes
from PySide6.QtCore import Qt, QCoreApplication
from PySide6.QtWidgets import QApplication, QMessageBox
# from PyQt5.QtWidgets import QApplication
from app.commons.dblogin import Login
from app import main
from logger_config import logger
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-o', metavar="theme", help='execute argument')
args = parser.parse_args()
try:
DIR = os.path.abspath(os.path.normpath(os.path.join(__file__,
'..', '..', '..')))
if os.path.isdir(DIR):
sys.path.insert(0, os.path.dirname(DIR))
except NameError:
pass
PROCESS_NAME = "app_presik_pos"
OS_NAME = os.name
class SingleInstanceApp(QApplication):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for process in psutil.process_iter(['pid', 'name']):
if process.info['name'] == PROCESS_NAME:
logger.error('La aplicación ya esta en ejecución')
self.show_already_running_dialog()
sys.exit(1)
def show_already_running_dialog(self):
msg = QMessageBox()
msg.setIcon(QMessageBox.Warning)
msg.setText("La aplicación ya está en ejecución.")
msg.setWindowTitle("Aplicación en ejecución")
msg.setStandardButtons(QMessageBox.Ok)
msg.exec()
class Client(object):
def __init__(self, parent=None):
# self.app = QApplication(sys.argv)
self.app = SingleInstanceApp(sys.argv)
self.app.setOrganizationName("PRESIK SAS")
self.app.setOrganizationDomain("presik.com")
self.app.setApplicationName("SMART POS")
self.app.setStyle("fusion")
if OS_NAME == 'posix':
setproctitle.setproctitle(PROCESS_NAME)
elif OS_NAME == 'nt':
kernel32 = ctypes.windll.kernel32
kernel32.SetConsoleTitleW(PROCESS_NAME)
def init_login(self):
_file_config = 'config_pos.ini'
if args.o:
_file_config = args.o
login = Login(file_config=_file_config)
while not login.context:
login.run()
login.exec()
login.timer.stop()
return login.context, login.params
def main(self, context, params):
_ = main.AppWindow(context, params)
self.app.exec()
client = Client()
context, params = client.init_login()
if context:
client.main(context, params)
sys.exit()