
    %|Rd*                        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          Z9dS )    N)XTypeProviderXSingleComponentFactoryXServiceInfo)RuntimeExceptionXCurrentContext)ALL)INOUTINOUT)	MAYBEVOIDBOUNDCONSTRAINED	TRANSIENTREADONLYMAYBEAMBIGUOUSMAYBEDEFAULT	REMOVABLEc                 \    d}| t           k    rd}n| t          k    rd}n| 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   ,   sA    
C						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   }|                                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'|                    t          |           dz              d S t          j
                    }|j                            d|          }|                    d           t          | d          r5|                                 }|D ]}|                    d|z   dz              n|                    d           |                    d           t          | d          r:|                                 }|D ]"}|                    d|j        z   dz              #n|                    d           |                    |           }|                    t&                    }|                    d	           |D ]}|                    d|j        j        z   d
z   |j        z              |j        }	|j        }
|                    d           t1          dt3          |	                    D ]l}|dk    r|                    d           |                    t5          |
|         j                  d
z   |	|         j        z   d
z   |
|         j        z              m|                    d           |                    t<                    }|                    d           |D ]J}|                    dt?          |j                   z   dz   |j        j        z   d
z   |j        z   dz              Kd S )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!! 			3s88d?###

!
#
#C			5	57Y[^	`	`  II&(((/11 #,,.. 	* 	*BIItby4'))))	* 			="""II   Z!! #\\^^
 	3 	3BIItbk)D02222	3 			="""""C))F!355GII| 	 			4"-,,s2RW<>>> !		43;;(( 	d 	dA1uu		4!!!II|U1X^55;d1glJSPSXYZS[Saacccc		6  "688EII    k k		5-r}>>>EbgFVVWZZ[][bbdhhjjjjk kr   c                 $    t          | ||          S N)_FactoryHelper_clazzimplementationNameserviceNamess      r   createSingleServiceFactoryr`   {   s    E#5|EEEr   c                       e Zd Zd ZdS )_ImplementationHelperEntryc                 "    || _         || _        d S 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                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )ImplementationHelperc                     i | _         d S rZ   )implsre   s    r   rf   zImplementationHelper.__init__   s    


r   c                 6    t          ||          | j        |<   d S rZ   )rb   ro   )re   rd   r^   r_   s       r   addImplementationz&ImplementationHelper.addImplementation   s    *DT,*W*W
%&&&r   c                     t          | j                                                  D ]J}d|d         z   dz   }|                    |          }|d         j        D ]}|                    |           KdS )N/r   /UNO/SERVICES   )listro   items	createKeyr_   )re   regKeysmgrrW   keyNamekeyserviceNames          r   writeRegistryInfoz&ImplementationHelper.writeRegistryInfo   s    dj&&(()) 	- 	-A1Q4i/1G""G--C t0 - -{,,,,-qr   c                     | 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   sK    
 2D::="$6$FOOO)5:7I5K]___r   c                 p    | 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O!!r   c                 t    | j                             |d           }|t          |dz   d           ||j        v S r   r   )re   r^   r~   r   s       r   supportsServicez$ImplementationHelper.supportsService   sA    
 2499="$6$FNNNe000r   N)	rh   ri   rj   rf   rr   r   r   r,   r   rk   r   r   rm   rm      st          X X X  ` ` `" " "1 1 1 1 1r   rm   c                       e Zd Zd ZdS )ImplementationEntryc                 0    || _         || _        || _        d S 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 ]C}d|j         z   dz   }|                    |          }|j        D ]}|                    |           Dd S )Nrt   ru   )r   ry   r   )r{   rz   
seqEntriesr   r|   r}   r~   s          r   writeRegistryInfoHelperr      sk     ) )u~%7)) 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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00r   c                 `    |D ]*}|j         | k    rt          |j        | |j                  c S +d S rZ   )r   r`   r]   r   )r^   r{   rz   r   xs        r   getComponentFactoryHelperr      sP     b b:+++-qw8JAL_aaaaa ,b br   c           	         |j         }|                    ||          }|                    d|          }t          j        dk    pt          j        dk    }t          j        dk    }|D ]}	|                    d|          }
|
                    ddd           |s"|	                    d	          r|r|	d
z   }	n|	dz   }	|                    ||	|
           |
	                                }|
                    d          }|                                }| j         }|D ]O}|                    t          |                    d                    d|	|          }|                    |           P|
                                 d S )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      s   (D++ZIIF,,.`aoppGGtO/rw%/ELH$E%  ,,.TVdff"a 	4..88 	4 4+h6+e3&&
<FFF..""#OO->@@%1133	%4 	" 	"A//3qwws||#4#4RWMMCNNC!!!!		# r   c                 l   d }| j         t          v rt          | j                  }ni }t          | j         j                  }t	          |          dk    rr|                                }|j        }t          j        |          rd ||j        <   n%t	          |          dk    r|t          |          z   }t	          |          dk    rt          |	                                          }g }|D ]+}t          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>*0118oo!!<<>>DNE&& 215d-..Ua#d5kk1 8oo!! 5::<<   	 	A!1&&ALL!Ell'*T^$Jr   c                       e Zd Zd Zd ZdS )Basec                      t          |           S rZ   )r   rp   s    r   r-   zBase.getTypes   s    #T+++r   c                     dS )Nrk   rk   rp   s    r   getImplementationIdzBase.getImplementationId   s    rr   N)rh   ri   rj   r-   r   rk   r   r   r   r      s2        , , ,    r   r   c                       e Zd ZdZd Zd ZdS )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                 "    || _         || _        d S rZ   )hashMap
oldContext)re   r   r   s      r   rf   zCurrentContext.__init__  s    $r   c                 t    || j         v r| j         |         S | j        | j                            |          S d S rZ   )r   r   getValueByName)re   r   s     r   r   zCurrentContext.getValueByName	  s?    4<<%%_(?1149994r   N)rh   ri   rj   __doc__rf   r   rk   r   r   r   r      s<         % % %    r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )r[   c                 0    || _         || _        || _        d S 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                 ,    |                      |          S rZ   r]   )re   contexts     r   r;   z)_FactoryHelper_.createInstanceWithContext#  s    zz7$$$r   c                      | j         |g|R  S rZ   r   )re   rU   r   s      r   %createInstanceWithArgumentsAndContextz5_FactoryHelper_.createInstanceWithArgumentsAndContext&  s    tz7+T++++r   N)	rh   ri   rj   rf   r   r   r,   r;   r   rk   r   r   r[   r[     sn        ) ) )
' ' '0 0 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 R R R R R R R R > > > > > > > > F F F F F F J J J J J J         
& & & & & & & & & & & & & & & & & & & &    (/k /k /kbF F F) ) ) ) ) ) ) )
1 1 1 1 1 1 1 1D       ) ) )3 3 3, , ,1 1 1b b b
  8   4    =       _d   (, , , , ,.d , , , , ,r   