
[Mc           @   s  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 m
 Z
 m Z d d l m Z d d l Z d d l m Z m Z m Z m Z m Z m Z d Z d Z d   Z d	   Z d
   Z d e
 j f d     YZ d d d     YZ d d d     YZ d e
 j f d     YZ d e
 j f d     YZ  d   Z! e  d  Z" e# d k re"   n  d S(   s   Python ActiveX Scripting Implementation

This module implements the Python ActiveX Scripting client.

To register the implementation, simply "run" this Python program - ie
either double-click on it, or run "python.exe pyscript.py" from the
command line.
iN(   t	   frameworkt   scriptdispatch(   t   axscript(   t   RaiseAssertt   tracet	   Exceptiont   SCRIPTTEXT_FORCEEXECUTIONt   SCRIPTTEXT_ISEXPRESSIONt   SCRIPTTEXT_ISPERSISTENTs&   {DF630910-1C1D-11d0-AE36-8C0F5E000000}i    c          G   s   t  r t |    n  d  S(   N(   t   debugging_attrR   (   t   args(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   debug_attr_print   s    c         C   s   t  j d d |   S(   Ns   	s       (   t   ret   sub(   t   text(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt
   ExpandTabs"   s    c         C   s   t  j d d |   S(   Ns   
s   
(   R   R   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   AddCR%   s    t   AXScriptCodeBlockc           B   s   e  Z d    Z RS(   c         C   s   d t  j j |   S(   Ns   PyScript - (   R    R   t   GetDisplayName(   t   self(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR   )   s    (   t   __name__t
   __module__R   (    (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR   (   s   t   AXScriptAttributec           B   s;   e  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   s$   An attribute in a scripts namespace.c         C   s   | |  j  d <d  S(   Nt   _scriptEngine_(   t   __dict__(   R   t   engine(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   __init__4   s    c         C   s]   | d d k r/ | d  d k r/ t  |   n  |  j |  } | d  k rY t  |   n  | S(   Ni   t   _i(   t   AttributeErrort   _FindAttribute_t   None(   R   t   attrt   rc(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   __getattr__6   s     c         C   s   d  |  j d <d  S(   NR   (   R   R   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   _Close_=   s    c         C   s~   y | j  | j   j SWn t k
 r+ n Xx? | j  j   D]. } y |  j | |  SWq< t k
 ri q< Xq< Wt |   d  S(   N(   t   subItemst   lowert   attributeObjectt   KeyErrort
   itervaluest   _DoFindAttribute_R   (   R   t   objR   t   item(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR(   @   s    c         C   sX   xB |  j  j j   D]. } y |  j | |  SWq t k
 r@ q Xq Wt |  j  j |  S(   N(   R   R#   R'   R(   R   t   getattrt   globalNameSpaceModule(   R   R   R*   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR   M   s    (   R   R   t   __doc__R   R!   R"   R(   R   (    (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR   2   s   				t   NamedScriptAttributec           B   s;   e  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   s3   An explicitely named object in an objects namespacec         C   s   | |  j  d <d  S(   Nt   _scriptItem_(   R   (   R   t
   scriptItem(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR   ^   s    c         C   s   d t  |  j  d S(   Ns   <NamedItemAttributet   >(   t   reprR/   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   __repr__`   s    c         C   s^   y |  j  j | j   j SWn0 t k
 rM |  j  j rN t |  j  j |  Sn Xt |   d  S(   N(   R/   R#   R$   R%   R&   t   dispatchContainerR+   R   (   R   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR!   b   s    c         C   sY   | j    } |  j j rI y t |  j j | |  SWqI t k
 rE qI Xn  t |   d  S(   N(   R$   R/   R4   t   setattrR   (   R   R   t   value(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   __setattr__k   s    c         C   s   d  |  j d <d  S(   NR/   (   R   R   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR"   u   s    (   R   R   R-   R   R3   R!   R7   R"   (    (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR.   X   s   					
t
   ScriptItemc           B   s,   e  Z d    Z d   Z d   Z d   Z RS(   c         C   s2   t  j j |  | | | |  i  |  _ d  |  _ d  S(   N(   R    R8   R   t
   scriptletsR   R%   (   R   t
   parentItemt   namet   dispatcht   flags(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR   z   s    	c         C   s6   t  j j |   |  j r) |  j j   n  d  |  _ d  S(   N(   R    R8   t   ResetR%   R"   R   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR>   ~   s    	c         C   s&   t  j j |   d  |  _ i  |  _ d  S(   N(   R    R8   t   CloseR   R4   R9   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR?      s    	c         C   s  t  j j |   t |   |  _ |  j ry^ |  j   } d  } } |  j j   } | j	   d } y | j
 | } Wn t k
 r n XWn t j k
 r d  } n X| d  k r t j j j |  j | d   } | d  k	 r | | j
 | <q n  t j j j |  j | |  j  |  _ n  d  S(   Ni    (   R    R8   t   RegisterR.   R%   R<   t	   GetEngineR   t   GetTypeInfot   GetTypeAttrt   mapKnownCOMTypesR&   t	   pythoncomt	   com_errort   win32comt   clientt   dynamict   MakeOleReprt	   CDispatchR;   R4   (   R   R   t   olereprt   clsidt   typeinfo(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR@      s&    	

(   R   R   R   R>   R?   R@   (    (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR8   y   s   			t   PyScriptc           B   s   e  Z d  Z d Z e j e j g Z d Z e	 Z
 d Z d d g Z d Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   s   Python.AXScript.2t   Pythons   Python ActiveX Scripting Engines*   win32com.axscript.client.pyscript.PyScripts   .pyst   pysFilet   bothc         C   s/   t  j j |   d  |  _ g  |  _ d  |  _ d  S(   N(   R    t	   COMScriptR   R   R,   t
   codeBlockst   scriptDispatch(   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR      s    		c         C   su   t  j j |   d d  l } d  |  _ | j d  |  _ t |   |  j j	 d <g  |  _
 g  |  _ i  |  _ d |  _ d  S(   Nit   __ax_main__t   axi    (   R    RS   t   InitNewt   impR   RU   t
   new_moduleR,   R   R   RT   t   persistedCodeBlocksRD   t   codeBlockCounter(   R   RY   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyRX      s    				c         C   s-   x |  j  D] } d | _ q
 Wt j j |   S(   Ni   (   RT   t   beenExecutedR    RS   t   Stop(   R   t   b(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR^      s    c         C   s]   |  j  } g  |  _  x7 | D]/ } | j t @r d | _ |  j  j |  q q Wt j j |   S(   Ni    (   RT   R=   R   R]   t   appendR    RS   R>   (   R   t   oldCodeBlocksR_   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR>      s    
		c         C   s   |  j  d |  _  |  j  S(   Ni   (   R\   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   _GetNextCodeBlockNumber   s    c         C   s   | j  } t j j |  |  | s | j   rG | j |  j j | j <n  | j	   r x- | j
 j   D] } | j |  j j | j <qc WxN | j j j j   D]4 \ } } | j s t | j |  |  j j | <q q Wq n  d  S(   N(   t   isRegisteredR    RS   t   RegisterNamedItemt	   IsVisibleR%   R,   R   R;   t   IsGlobalR#   R'   R4   t	   _olerepr_t   mapFuncst	   iteritemst   hiddenR+   (   R   R*   t   wasRegt   subitemR;   t   entry(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyRd      s    	"	c         C   s]   zU |  j  j } xB |  j D]7 } | j s |  j | d  rP |  j | |  qP q q WWd  Xd  S(   Nt   exec(   R,   R   RT   R]   t   CompileInScriptedSectiont   ExecInScriptedSection(   R   t   globst	   codeBlock(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   DoExecutePendingScripts   s    	c         C   s   d  S(   N(    (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   DoRun   s    c         C   s9   |  j    d  |  _ g  |  _ d  |  _ t j j |   d  S(   N(   t   ResetNamespaceR   R,   RT   RU   R    RS   R?   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR?      s
    
			c         C   s1   |  j  d  k r* t j |  |  j  |  _  n  |  j  S(   N(   RU   R   R   t   MakeScriptDispatchR,   (   R   R;   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   GetScriptDispatch   s    c         C   s0   | d j    | d d | d j    | d S(   Ni    i   R   (   t   upper(   R   t   subItemNamet	   eventName(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   MakeEventMethodName  s    c	         C   s   |  j  |  }	 | | k r$ |	 }
 n |	 j |	 | d  d   }
 |  j | |  } t d | | | | d  } |  j |  | |
 j | <d  S(   Ns   Script Event %si    (   t   GetNamedItemt   GetCreateSubItemR   R{   R   t   _AddScriptCodeBlockR9   (   R   t   defaultNamet   codet   itemNameRy   Rz   t	   delimitert   sourceContextCookiet   startLineNumberR*   t   subItemt   funcNameRr   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   DoAddScriptlet  s    	c         C   s  |  j  | j | j  } d  } } y8 | j | } t |  t |   k rY | } d  } n  Wn t k
 rm n X| d  k	 rd | }	 x5 t j | j  j	 d  D] }
 |	 d |
 d }	 q W|	 d }	 |  j
 | d |	  s d  Si  } |  j | |  j j |  | | } | | j | <n  | d  k ry |  j j | } Wqt k
 r| j   } xP |  j j j   D]8 } | | j   k rg|  j j | } | | j | <qgqgWqXn  | d  k rt d t j   n  |  j | | |  S(   Ns
   def %s():
s   
s   	Rn   t   scode(   R{   R;   R   R9   t   typeR&   R    t   RemoveCRt   codeTextt   splitRo   Rp   R,   R   R$   t   iterkeysR   t   winerrort   DISP_E_MEMBERNOTFOUNDt   ApplyInScriptedSection(   R   R*   t   eventt   lcidt   wFlagsR
   R   Rr   t   functiont   realCodet   linet   dictt   funcNameLookR   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   DoProcessScriptItemEvent  s@    

"

c         C   s(  t  j |  d } | t @r, d } d } n d } d } |  j   } | d k rY d } n  d | | f } t | | | | |  }	 |  j |	  |  j j }
 | r |  j |	 |  r$| t @r |  j	 |	 |
  S|  j
 |	 |
  Sq$nB | t @r|  j |	 |  r$|  j
 |	 |
  q$n |  j j |	  d  S(	   Ns   
s   Script Expressiont   evals   Script BlockRn   i   t    s   %s %s(   R    R   R   Rb   R   R~   R,   R   Ro   t   EvalInScriptedSectionRp   R   RT   R`   (   R   R   R   R   t   bWantResultR=   R;   t	   exec_typet   numRr   Rq   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   DoParseScriptText;  s,    
	 	

c         C   s   t  S(   N(   R8   (   R   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   GetNamedItemClassX  s    c         C   sD   |  j  d  k	 r@ y |  j  j j   Wn t k
 r6 n Xd  } n  d  S(   N(   R,   R   RW   t   _Reset_R   (   R   R,   (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyRu   [  s    (   s   .pys(   RQ   (   R   R   t   _reg_verprogid_t   _reg_progid_R   t   CATID_ActiveScriptt   CATID_ActiveScriptParset   _reg_catids_t
   _reg_desc_t   PyScript_CLSIDt   _reg_clsid_t   _reg_class_spec_t   _reg_remove_keys_t   _reg_threading_R   RX   R^   R>   Rb   Rd   Rs   Rt   R?   Rw   R{   R   R   R   R   Ru   (    (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyRO      s0   				
			
						(		c          C   s   t  }  t j j j |  j d i   t j j j d d  t j j j d |  j  d } t j j j d |  t j j j d |  d  S(   Ns
   \OLEScripts   .pysRQ   s   pysFile\ScriptEngines&   {60254CA5-953B-11CF-8C96-00AA00B8708C}s   pysFile\ShellEx\DropHandlers.   pysFile\ShellEx\PropertySheetHandlers\WSHProps(   RO   RG   t   servert   registert   _set_subkeysR   t   _set_string(   t   klasst   guid_wsh_shellex(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   DllRegisterServerc  s    c         C   s+   d d  l  } t j j j |  d t } | S(   Nit   finalize_register(   t   sysRG   R   R   t   UseCommandLineR   (   R   R   t   ret(    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyR@   m  s    	t   __main__(    (    ($   R-   R   RG   t   win32apiRE   R   t	   tracebackR   t   win32com.client.dynamict   win32com.axscript.clientR    R   t   win32com.axscriptR   t   win32com.server.registert"   win32com.axscript.client.frameworkR   R   R   R   R   R   R   R	   R   R   R   R   R   R.   R8   RS   RO   R   R@   R   (    (    (    sG   K:\RCS\Python\Lib\site-packages\win32comext\axscript\client\pyscript.pyt   <module>   s4   .			
&!,	
