import inspect 
import sys, os
os.environ["SESSION_GUID"] = "ec7a396e-3ede-4380-a93c-017c0a553c54"
sys.path.append(r"C:\Program Files\CENOS Induction Heating\backend\app\salome\automation") 
import math
import json
import salome
wDir = r"C:\CENOS\saved\123"
hdfFile = wDir+ '\\geometry\\Study_Geometry.hdf' 
terminals = [124 ,143 ,4 ,23]

salome.salome_init(hdfFile)

import GEOM
from salome.geom import geomBuilder
from collections import OrderedDict
import cadProcedures
import salome_version
import stat

if salome_version.getVersions() >= [9,0,0]:
    geompy = geomBuilder.New()
else:
    geompy = geomBuilder.New(salome.myStudy)
	
CADP= cadProcedures.cadProcedures()

port, guid = CADP.getPortGuid()
CADP.sendLog(wDir,"Reading geometry")

try:
    oldPartition = salome.myStudy.FindObject("Partition_1").GetObject()
    CADP.sendLog(wDir, "Adding air domain")
    newPartition = CADP.addAirBox(oldPartition, terminals)	
    volumeList = geompy.SubShapeAll(newPartition, geompy.ShapeType["SOLID"])
    CADP.sendLog(wDir, "Extracting VTK from geometry")
    jsondata = CADP.extractVtkData(wDir, volumeList, newPartition)
    CADP.addQueuedObjectsToStudy(newPartition)

    jsondata['geometryFile'] = 'geometry\\Study_Geometry.hdf'
    with open(wDir + '\\vtk\\stepToVtk.json', "w") as write_file:
        json.dump(jsondata, write_file)

    if salome_version.getVersions() >= [9,0,0]:
        if os.path.isfile(wDir + '\\geometry\\Study_Geometry.hdf'):
            os.chmod(wDir + '\\geometry\\Study_Geometry.hdf', stat.S_IWRITE)
        salome.myStudy.SaveAs(wDir + '\\geometry\\Study_Geometry.hdf', False, False)
        os.chmod(wDir + '\\geometry\\Study_Geometry.hdf', stat.S_IWRITE)
    else:
        salome.myStudyManager.SaveAs(wDir + '\\geometry\\Study_Geometry.hdf', salome.myStudy, False)

    status = 'success'
except:
    status = 'error'


# response part
# MESSAGEDATA['status'] = [sendToGui, message]
MESSAGEDATA    = OrderedDict()
MESSAGEDATA['error'] = [True, "Automatic creation of air domain failed. Please try manual creation air!"]
MESSAGEDATA['success'] = [False, wDir + '\\geometry\\Study_Geometry.hdf']

responsedata = CADP.responseToCenos(status, MESSAGEDATA, port, guid, wDir)

if not salome.sg.hasDesktop():
    from killSalomeWithPort import killMyPort
    killMyPort(os.getenv('NSPORT'))
