r"""
The OpenRPA package (from UnicodeLabs/Ivan Maslov)
__main__ file goes outside the package and used like a main file when the python runs module directly from start
"""
#If run as python executable module, need to set python path in pyOpenRPA package to load subpackge
import sys
lFolderPath= "\\".join(__file__.split("\\")[:-1])
sys.path.append(lFolderPath)
################################
import traceback
from Core import ProcessCommunicator
from Core import JSONNormalize
from Core import UIDesktop
##########################################
#Run UIDesktop from new process. Communication with paren process by PIPE channel
##########################################
#Определить разрядность процесса
buffer = ""
lJSONInputString=""
while True:
    #Reset the lProcessResponse
    lProcessResponse={"ErrorFlag":False}
    try:
        #Ожидаем синхронно поступление объекта
        lJSONInput = ProcessCommunicator.ProcessParentReadWaitObject()
        lProcessResponse["ActivitySpecificationDict"]=lJSONInput
        #Выполнить вызов функции
        lFunction = getattr(UIDesktop,lJSONInput['ActivityName'])
        lProcessResponse["Result"]=JSONNormalize.JSONNormalizeDictListStrIntBool(lFunction(*lJSONInput['ArgumentList'],**lJSONInput['ArgumentDict']))
    except Exception as e:
        #Установить флаг ошибки
        lProcessResponse["ErrorFlag"]=True
        #Зафиксировать traceback
        lProcessResponse["ErrorTraceback"]=traceback.format_exc()
        #Зафиксировать Error message
        lProcessResponse["ErrorMessage"]=str(e)
        #lProcessResponse["ErrorArgs"]=str(e.args)
    #Отправить ответ в родительский процесс
    ProcessCommunicator.ProcessParentWriteObject(lProcessResponse)