# -*- coding: utf-8 -*-
"""
Created on Wed Aug  1 10:02:11 2018

@author: Lonnie
"""


import Analytica_Python

class AnalyticaPythonConnector:
    
    _reg_clsid_ = "{A00C253A-4303-4C61-83E7-AEEEDD9A96DD}"
    _reg_desc_ = "Connector for interacting with Python from Analytica"   
    _reg_progid_ = "Analytica_Python.connector"    
    _reg_class_spec_ = "AnalyticaPythonConnector.AnalyticaPythonConnector"
    _public_methods_ = ['Eval','Exec','Set', 'SetEval', 'Hello', 'Pause']
    _public_attrs_ = ['softspace', 'noCalls']
    _readonly_attrs_ = ['noCalls']

    def __init__(self):
        print("New " + self.__class__.__name__)
        self.softspace = 1
        self.noCalls = 0

    def Eval(self,expr):
        return eval(str(expr),globals())
    
    def Exec(self,stmt):
        return exec(str(stmt),globals())
        
    def Set(self,varName,val):
        globals()[str(varName)] = val
    
    def SetEval(self, varName, expr):
        v = eval(str(expr))
        globals()[str(varName)] = v
        return v
    
    def Pause(self):
        Analytica_Python.gBreakPump = True

    def Hello(self, who):
        self.noCalls = self.noCalls + 1
        # insert "softspace" number of spaces
        return "Hello" + " " * self.softspace + str(who)
    
Analytica_Python.AddCOMClass(AnalyticaPythonConnector)

if __name__ == "__main__":
    Analytica_Python.TopLevelServer()