ó
Þw¶Vc           @   sÑ   d  d l  Z  d  d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d	 „  Z	 d
 „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z e d k rÍ e ƒ  n  d S(   iÿÿÿÿNi   (   t   config(   t   utils(   t	   dbustypes(   t   parser(   t   codegen(   t   codegen_docbookc         C   s(   x! |  D] } | j  | k r | Sq Wd  S(   N(   t   namet   None(   t   arg_listt   arg_namet   a(    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt   find_arg    s    c         C   s+   x$ |  j  D] } | j | k r
 | Sq
 Wd  S(   N(   t   methodsR   R   (   t   ifacet   methodt   m(    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt   find_method&   s    c         C   s+   x$ |  j  D] } | j | k r
 | Sq
 Wd  S(   N(   t   signalsR   R   (   R   t   signalR   (    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt   find_signal,   s    c         C   s+   x$ |  j  D] } | j | k r
 | Sq
 Wd  S(   N(   t
   propertiesR   R   (   R   t   propR   (    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt	   find_prop2   s    c         C   sú  d  } x' |  D] }	 |	 j | k r |	 } Pq q W| d  k rO t d | ƒ ‚ n  d  }
 | rt | | ƒ } | d  k r t d | | f ƒ ‚ n  | rù t | j | ƒ } | d  k rð t | j | ƒ } | d  k rð t d | | | f ƒ ‚ qð n  | }
 q×| }
 nÕ | rŽt | | ƒ } | d  k r<t d | | f ƒ ‚ n  | r…t | j | ƒ } | d  k r|t d | | | f ƒ ‚ n  | }
 q×| }
 nI | rÑt	 | | ƒ } | d  k rÈt d | | f ƒ ‚ n  | }
 n | }
 |
 j
 j d t j | | ƒ ƒ d  S(   Ns   No interface %ss   No method %s on interface %ss&   No arg %s on method %s on interface %ss   No signal %s on interface %ss&   No arg %s on signal %s on interface %ss   No property %s on interface %si    (   R   R   t   RuntimeErrorR   R   t   in_argst   out_argsR   t   argsR   t   annotationst   insertR   t
   Annotation(   t
   iface_listR   R   R   R   t   argt   keyt   valuet	   iface_objt   it
   target_objt
   method_objt   arg_objt
   signal_objt   prop_obj(    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt   apply_annotation8   sJ    					c      
   C   sB  x;| D]3\ } } } | j  d ƒ } | d k râ | d | !} | | d } | j  d ƒ } | d k rÀ | | d } | d | !} | j  d ƒ } | d | !} t |  | d  | d  | | | ƒ q:t |  | d  | d  d  | | ƒ q | j  d ƒ } | d k r:| d | !} | | d }	 t |  | d  d  |	 d  | | ƒ q | j  d	 ƒ } | d k r| d | !}
 |
 j d
 ƒ } |
 d | !} |
 | d } | j  d ƒ } | d k ró| | d } | j  d ƒ } | d | !} t |  | | d  d  | | | ƒ q:t |  | | d  d  d  | | ƒ q | } t |  | d  d  d  d  | | ƒ q Wd  S(   Ns   ::iÿÿÿÿi    i   t   [i   t   ]t   :s   ()t   .(   t   findR)   R   t   rfind(   R   t   annotation_listt   whatR    R!   t   posR   R   R   R   t   combinedR   (    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt   apply_annotationsf   sB    """""c          C   sg  t  j d ƒ }  |  j d d d d d d d d	 ƒ|  j d d
 d d d d d d ƒ|  j d d d d d d d d ƒ|  j d d d d d d ƒ|  j d d d d d d ƒ|  j d d d d d d ƒ|  j d d d d d d d d d d ƒ|  j ƒ  \ } } g  } xO | D]G } t | d ƒ } | j ƒ  } | j ƒ  t j | ƒ } | j	 | ƒ qW| j
 d  k r}t | | j
 ƒ n  x$ | D] } | j | j | j ƒ q„W| j }	 t j | |	 ƒ }
 |	 rÔ|
 j ƒ  } n  | j } | rVt | d d  ƒ } t | d! d  ƒ } t j | | j | j | j |
 | | ƒ } | j ƒ  } | j ƒ  | j ƒ  n  t j d" ƒ d  S(#   Ns   %prog [options]t    s   --xml-filest   metavart   FILEt   actiont   appendt   helps   D-Bus introspection XML files   --interface-prefixt   PREFIXt   defaults<   String to strip from D-Bus interface names for code and docss   --c-namespacet	   NAMESPACEs)   The namespace to use for generated C codes   --c-generate-object-managert
   store_truesC   Generate a GDBusObjectManagerClient subclass when generating C codes   --generate-c-codet   OUTFILESs    Generate C code in OUTFILES.[ch]s   --generate-docbooks2   Generate Docbook in OUTFILES-org.Project.IFace.xmls
   --annotatet   nargsi   s   WHAT KEY VALUEs*   Add annotation (may be used several times)t   rbs   .ht   ws   .ci    (   t   optparset   OptionParsert
   add_optiont
   parse_argst   opent   readt   closeR   t   parse_dbus_xmlt   extendt   annotateR   R4   t   post_processt   interface_prefixt   c_namespacet   generate_docbookR   t   DocbookCodeGeneratort   generatet   generate_c_codeR   t   CodeGeneratort   c_generate_object_managert   syst   exit(   t
   arg_parsert   optsR   t
   all_ifacest   fnamet   ft   xml_datat   parsed_ifacesR#   t   docbookt   docbook_gent   rett   c_codet   ht   ct   gen(    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt   codegen_main“   sZ    !
			
t   __main__(   RV   RC   R5   R    R   R   R   R   R   R   R   R   R   R)   R4   Rf   t   __name__(    (    (    s+   /usr/share/glib-2.0/codegen/codegen_main.pyt   <module>   s    					.	-	5