home *** CD-ROM | disk | FTP | other *** search
/ c't freeware shareware 1997 / CT_SW_97.ISO / mac / Software / entwickl / win95 / pythowin.exe / DATA.4 / AXScript / pyaxsu.py < prev   
Text File  |  1996-11-21  |  3KB  |  108 lines

  1. import axscript # Built in to the script engine.
  2. import sys
  3. sys.stdout = sys.stderr = axscript # axscript has a "write" method.
  4. # Error message will now go _somewhere_ - even if only the debugger!
  5.  
  6. import pyaximpl # Core code.
  7. import traceback # for debugging.
  8.  
  9. debugging=0
  10. reload_impl = 0
  11. def debug_print(*args):
  12.     if debugging:
  13.         for arg in args:
  14.             print arg,
  15.         print
  16.  
  17. class AXScriptEngine:
  18.     def __init__(self, CScript):
  19.         self.cscript = CScript # The C++ script engine.
  20.         self.mgr = None
  21.     def Init(self):
  22.         debug_print("AXScriptEngine.Init called")
  23.         try:
  24.             if reload_impl: reload(pyaximpl) # for debugging
  25.             self.mgr = pyaximpl.AXScriptManager()
  26.         except:
  27.             raise pyaximpl.AXScriptException()
  28.     def Reset(self):
  29.         debug_print( "AXScriptEngine.Reset called" )
  30.         try:
  31.             if self.mgr: self.mgr.Reset()
  32.             if reload_impl: reload(pyaximpl) # For debugging purposes
  33.             self.mgr = pyaximpl.AXScriptManager() # Create a new manager.
  34.         except:
  35.             traceback.print_exc()
  36.             raise pyaximpl.AXScriptException()
  37.  
  38.     def Release(self):
  39.         debug_print( "AXScriptEngine.Release called" )
  40.         try:
  41.             if self.mgr: self.mgr.Release()
  42.             self.mgr = None
  43.         except:
  44.             traceback.print_exc()
  45.             raise pyaximpl.AXScriptException()
  46.  
  47.     def AddObject(self, name, IDispatch, modId, flags):
  48.         debug_print("AXScriptEngine.AddObject called with ",name, IDispatch, modId, flags)
  49.         try:
  50.             module = self.mgr.GetModule(modId)
  51.             module.AddObject(name, IDispatch, flags)
  52.         except:
  53.             traceback.print_exc()
  54.             raise pyaximpl.AXScriptException()
  55.  
  56.     def AddToScript(self, sourceCode, modId, useEntry, flags, linebase, args):
  57.         debug_print("AXScriptEngine.AddToScript called with ", sourceCode, modId, useEntry, flags, linebase, args)
  58.         try:
  59.             self.mgr.AddToScript(modId, sourceCode, useEntry, flags, linebase, args)
  60.         except:
  61.             raise pyaximpl.AXScriptException()
  62.  
  63.     def GetEntryPoint(self, name, modId):
  64.         debug_print("GetEntryPoint called with ", name, modId)
  65.         try:
  66.             mod = self.mgr.GetModule(modId)
  67.             rc = mod.GetEntryPoint(name)
  68.             if rc is None and mod <> 0: # Not in local - check global
  69.                 rc = self.mgr.GetModule(0).GetEntryPoint(name)
  70.             return rc
  71.         except:
  72.             raise pyaximpl.AXScriptException()
  73.     def ReleaseEntryPoint(self, entryPoint):
  74.         debug_print("ReleaseEntryPoint called with ", entryPoint)
  75.     def Call(self, variantArgs, addnlArgs):
  76. #        debug_print("Call called with ", variantArgs, addnlArgs)
  77.         (modId, instmethod), flags, defiDisp = addnlArgs
  78.         try:
  79.             return self.mgr.Call(modId, instmethod, flags, defiDisp, variantArgs)
  80.         except:
  81.             raise pyaximpl.AXScriptException()
  82.     def Execute(self):
  83.         debug_print("AXScriptEngine.Execute called, but ignored!")
  84.  
  85.     def SetDefaultThis(self, this):
  86.         debug_print("AXScriptEngine.SetDefaultThis called, but ignored!")
  87.         
  88.     def SetDefaultDispatch(self, modId, dispatch):
  89.         try:
  90.             self.mgr.SetDefaultDispatch(modId, dispatch)
  91.         except:
  92.             raise pyaximpl.AXScriptException()
  93.     def GetDispatchForModule(self, modId):
  94.         try:
  95.             return self.mgr.GetDispatchForModule(modId)
  96.         except:
  97.             raise pyaximpl.AXScriptException()
  98.     
  99.             
  100.     def GetInterfaceSafetyOptions(self):
  101.         return self.mgr.GetInterfaceSafetyOptions()
  102.     def SetInterfaceSafetyOptions(self, optionsMask, enabledOptions):
  103.         return self.mgr.SetInterfaceSafetyOptions(optionsMask, enabledOptions)
  104.  
  105. def CreateScriptEngine(CScript):
  106.     debug_print("Creating script engine")
  107.     return AXScriptEngine(CScript)
  108.