
     g*                     f   d dl Z d dlZd dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
 d dlmZ d dlmZ d dlmZmZmZ d dlmZmZmZmZm Z!m"Z#m$Z%m&Z' d Z(d Z)d	 Z*d
 Z+ G d d      Z, G d d      Z- G d d      Z.d Z/d Z0d Z1d Z2d Z3d Z4i Z5d Z6 G d de      Z7 G d de
e7      Z8 G d deee7      Z9y)    N)XTypeProviderXSingleComponentFactoryXServiceInfo)RuntimeExceptionXCurrentContext)ALL)INOUTINOUT)	MAYBEVOIDBOUNDCONSTRAINED	TRANSIENTREADONLYMAYBEAMBIGUOUSMAYBEDEFAULT	REMOVABLEc                 T    d}| t         k(  rd}|S | t        k(  rd}|S | t        k(  rd}|S )Nz[]z[inout]z[out]z[in])PARAM_MODE_INOUTPARAM_MODE_OUTPARAM_MODE_INmoderets     +/usr/lib/python3/dist-packages/unohelper.py_mode_to_strr   ,   sF    
C
 J	 
	 J 
	J    c                    d}t         | z  r|dz   }t        | z  r|dz   }t        | z  r|dz   }t        | z  r|dz   }t        | z  r|dz   }t
        | z  r|dz   }t        | z  r|dz   }t        | z  r|d	z   }|j                         S )
N z
removable zmaybedefault zmaybeambiguous z	readonly z
transient zconstrained zbound z
maybevoid )	PROP_ATTR_REMOVABLEPROP_ATTR_MAYBEDEFAULTPROP_ATTR_MAYBEAMBIGUOUSPROP_ATTR_READONLYPROP_ATTR_TRANSIENTPROP_ATTR_CONSTRAINEDPROP_ATTR_BOUNDPROP_ATTR_MAYBEVOIDrstripr   s     r   _propertymode_to_strr)   6   s    
CT!L $O#$&%%D KT!L t#N"HnT!L ::<r   c                    t        | t        j                        st        | t        j                        sht        | t        j                        sNt        | t        j
                        s4t        | t        j                        st        | t        j                        r|j                  t        |       dz          y t        j                         }|j                  j                  d|      }|j                  d       t        | d      r/| j                         }|D ]  }|j                  d|z   dz           n|j                  d       |j                  d       t        | d      r9| j                         }|D ]#  }|j                  d|j                   z   dz          % n|j                  d       |j#                  |       }|j%                  t&              }|j                  d	       |D ]  }|j                  d|j(                  j*                  z   d
z   |j*                  z          |j,                  }	|j.                  }
|j                  d       t1        dt3        |	            D ]e  }|dkD  r|j                  d       |j                  t5        |
|   j6                        d
z   |	|   j*                  z   d
z   |
|   j8                  z          g |j                  d        |j;                  t<              }|j                  d       |D ]V  }|j                  dt?        |j@                        z   dz   |j                  j                   z   d
z   |j*                  z   dz          X y )N
z com.sun.star.beans.IntrospectionzSupported services:
getSupportedServiceNamesz  z
  unknown
zInterfaces:
getTypesz	Methods:
 z( r   z, z )
zProperties:
z  (z) )!
isinstanceunoTypeCharBoolByteSequenceEnumAnywritestrgetComponentContextServiceManagercreateInstanceWithContexthasattrr,   r-   typeNameinspect
getMethodsMETHOD_CONCEPT_ALL
ReturnTypeNameParameterTypesParameterInfosrangelenr   aModeaNamegetPropertiesPROPERTY_CONCEPT_ALLr)   
Attributes)objoutctxintrospectionnamesii
interfacesaccessmethodsargsinfosipropss                r   r>   r>   J   s   3"3"3"3((*3"3!		3s8d?#

!
!
#C				5	57Y[^	`  II&(/1,,. 	*BIItby4')	* 			="II Z!\\^
 	3BIItbkk)D02	3 			="""C)F!35GII| 			4"--,,,s2RWW<>  !!		43;( 	dA1u		4!II|U1X^^5;d1gllJSPSXYZS[SaSaac	d 			6	   "68EII  k		5-r}}>>EbggFVFVVWZZ[][b[bbdhhjkr   c                     t        | ||      S N)_FactoryHelper_clazzimplementationNameserviceNamess      r   createSingleServiceFactoryr`   {   s    E#5|EEr   c                       e Zd Zd Zy)_ImplementationHelperEntryc                      || _         || _        y rZ   )ctorr_   )selfrd   r_   s      r   __init__z#_ImplementationHelperEntry.__init__   s    	(r   N__name__
__module____qualname__rf    r   r   rb   rb   ~   s    )r   rb   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)ImplementationHelperc                     i | _         y rZ   )implsre   s    r   rf   zImplementationHelper.__init__   s	    
r   c                 6    t        ||      | j                  |<   y rZ   )rb   ro   )re   rd   r^   r_   s       r   addImplementationz&ImplementationHelper.addImplementation   s    *DT,*W

%&r   c                     t        | j                  j                               D ]C  }d|d   z   dz   }|j                  |      }|d   j                  D ]  }|j                  |        E y)N/r   /UNO/SERVICES   )listro   items	createKeyr_   )re   regKeysmgrrW   keyNamekeyserviceNames          r   writeRegistryInfoz&ImplementationHelper.writeRegistryInfo   so    djj&&() 	-A1Q4i/1G""G-C t00 -{,-	-
 r   c                     | j                   j                  |d       }|t        |dz   d       t        |j                  ||j
                        S Nz is unknown)ro   getr   r`   rd   r_   )re   r^   rz   r{   entrys        r   getComponentFactoryz(ImplementationHelper.getComponentFactory   sI    

 2D:="$6$FOO)5::7I5K]K]__r   c                 t    | j                   j                  |d       }|t        |dz   d       |j                  S r   ro   r   r   r_   )re   r^   r   s      r   r,   z-ImplementationHelper.getSupportedServiceNames   s;    

 2D:="$6$FOO!!!r   c                 x    | j                   j                  |d       }|t        |dz   d       ||j                  v S r   r   )re   r^   r~   r   s       r   supportsServicez$ImplementationHelper.supportsService   s@    

 249="$6$FNNe0000r   N)	rh   ri   rj   rf   rr   r   r   r,   r   rk   r   r   rm   rm      s"    X`"1r   rm   c                       e Zd Zd Zy)ImplementationEntryc                 .    || _         || _        || _        y rZ   )implNamesupportedServicesr]   )re   r   r   r]   s       r   rf   zImplementationEntry.__init__   s     !2
r   Nrg   rk   r   r   r   r      s    r   r   c                     |D ]G  }d|j                   z   dz   }|j                  |      }|j                  D ]  }|j                  |        I y )Nrt   ru   )r   ry   r   )r{   rz   
seqEntriesr   r|   r}   r~   s          r   writeRegistryInfoHelperr      sU     )u~~%7) 22 	)KMM;(	))r   c                 ,    t        j                  |       S )z,returns a file-url for the given system path)pyunosystemPathToFileUrl)
systemPaths    r   r   r      s    $$j22r   c                 ,    t        j                  |       S )zVreturns a system path (determined by the system, the python interpreter is running on))r   fileUrlToSystemPath)urls    r   r   r      s    $$c++r   c                 .    t        j                  | |      S )z0returns an absolute file url from the given urls)r   
absolutize)pathrelativeUrls     r   r   r      s    T;00r   c                 v    |D ]4  }|j                   | k(  st        |j                  | |j                        c S  y rZ   )r   r`   r]   r   )r^   r{   rz   r   xs        r   getComponentFactoryHelperr      s:     b::++-qww8JAL_L_aabr   c           	         |j                   }|j                  ||      }|j                  d|      }t        j                  dk(  xs t        j                  dk(  }t        j
                  dk(  }|D ]  }	|j                  d|      }
|
j                  ddd       |s|	j                  d	      r|r|	d
z   }	n|	dz   }	|j                  ||	|
       |
j                         }|j                  d      }|j                         }| j                   }|D ]?  }|j                  t        |j                  d            d|	|      }|j                  |       A |
j!                           y )Nz0com.sun.star.registry.ImplementationRegistrationntdosdarwinz$com.sun.star.registry.SimpleRegistryr   r   rv   z.unoz.dylibz.soIMPLEMENTATIONSrt   )r:   r;   osnamesysplatformopenendswithregisterImplementation
getRootKeyopenKeygetKeyNamesactivatemaxsplitinsertclose)toBeExtendedContextcontextRuntimecomponentUrls
loaderNamer{   loaderimplRegisWinisMaccomponentUrlregrootKeyimplementationKey	implNamesextSMGRr   facs                    r   addComponentsToContextr      sD   ((D++ZIF,,.`aopGGGtO/rww%/ELLH$E% ,,.TVdf"a..8+h6+e3&&
<F.."#OO->@%113	%44 	"A//3qwws|#4RWMCNNC!	" 			#r   c                 Z   d }| j                   t        v rt        | j                      }|S i }t        | j                   j                        }t	        |      dkD  rl|j                         }|j                  }t        j                  |      rd ||j                  <   nt	        |      dkD  r|t        |      z   }t	        |      dkD  rlt        |j                               }g }|D ](  }t        j                  |      }	|j                  |	       * t        |      }|t        | j                   <   |S )Nr   )	__class___g_typeTablerw   	__bases__rF   popr0   isInterface__pyunointerface__keysgetTypeByNameappendtuple)
re   r   rP   traverseitembaseslsttypesr   ts
             r   _unohelper_getHandler      s   
C~~%4>>** J' 0018o!<<>DNNE&15d--.Ua#d5k1 8o! 5::<  	A!!1&ALL!	 El'*T^^$Jr   c                       e Zd Zd Zd Zy)Basec                     t        |       S rZ   )r   rp   s    r   r-   zBase.getTypes   s    #T++r   c                      y)Nrk   rk   rp   s    r   getImplementationIdzBase.getImplementationId   s    r   N)rh   ri   rj   r-   r   rk   r   r   r   r      s    ,r   r   c                       e Zd ZdZd Zd Zy)CurrentContextza current context implementation, which first does a lookup in the given
       hashmap and if the key cannot be found, it delegates to the predecessor
       if available
    c                      || _         || _        y rZ   )hashMap
oldContext)re   r   r   s      r   rf   zCurrentContext.__init__  s    $r   c                     || j                   v r| j                   |   S | j                  | j                  j                  |      S y rZ   )r   r   getValueByName)re   r   s     r   r   zCurrentContext.getValueByName	  s?    4<<<<%%__(??11499r   N)rh   ri   rj   __doc__rf   r   rk   r   r   r   r      s    %r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)r[   c                 .    || _         || _        || _        y rZ   r\   )re   r]   r^   r_   s       r   rf   z_FactoryHelper_.__init__  s    
"4(r   c                     | j                   S rZ   )r^   rp   s    r   getImplementationNamez%_FactoryHelper_.getImplementationName  s    &&&r   c                     || j                   v S rZ   r_   )re   ServiceNames     r   r   z_FactoryHelper_.supportsService  s    d////r   c                     | j                   S rZ   r   rp   s    r   r,   z(_FactoryHelper_.getSupportedServiceNames   s       r   c                 $    | j                  |      S rZ   r]   )re   contexts     r   r;   z)_FactoryHelper_.createInstanceWithContext#  s    zz7$$r   c                 (     | j                   |g| S rZ   r   )re   rU   r   s      r   %createInstanceWithArgumentsAndContextz5_FactoryHelper_.createInstanceWithArgumentsAndContext&  s    tzz7+T++r   N)	rh   ri   rj   rf   r   r   r,   r;   r   rk   r   r   r[   r[     s     )
'0!%,r   r[   ):r0   r   r   r   com.sun.star.langr   r   r   com.sun.star.unor   r    com.sun.star.beans.MethodConceptr   r@   "com.sun.star.beans.PropertyConceptrJ   !com.sun.star.reflection.ParamModer	   r   r
   r   r   r   $com.sun.star.beans.PropertyAttributer   r'   r   r&   r   r%   r   r$   r   r#   r   r"   r   r!   r   r    r   r)   r>   r`   rb   rm   r   r   r   r   r   r   r   r   r   r   r   r[   rk   r   r   <module>r      s   &   	 
 R R > F J 
& & &(/kbF) )
1 1D )3,1b
8 4= _d (,.d ,r   