
    eb'                         d dl mZ d dlmZ d dlmZmZmZ d Zd Z	d Z
d Zd Z G d	 d
e          Z G d de          Z G d de          Zd Z G d de          ZdgZdS )    )abc)partial)GLibGObjectGioc                    d }t          | t          j                  r|                     |d           }nt	          | |d           }|t          d|z            d}t          |t          j                  r8t          |          dk    rt          d|z            |dd          }|d         }n!t          |          st          d|z            ||fS )NzHandler %s not found r   z!Handler %s tuple can not be empty   z-Handler %s is not a method, function or tuple)

isinstancer   MappinggetgetattrAttributeErrorSequencelen	TypeErrorcallable)
obj_or_maphandler_namehandlerargss       1/usr/lib/python3/dist-packages/gi/_gtktemplate.py_extract_handler_and_argsr      s    G*ck** :..t44*lD993lBCCCD'3<(( Sw<<1?'IJJJqrr{!*g SG'QRRRD=    c                  T    ddl m  G fddt          j        j                  } | S )Nr   Gtkc                   ,     e Zd Zd fd	ZfdZ xZS )*define_builder_scope.<locals>.BuilderScopeNc                 V    t                                                       || _        d S N)super__init___scope_object)selfscope_object	__class__s     r   r#   z3define_builder_scope.<locals>.BuilderScope.__init__6   s'    GG!-Dr   c                    |                                 p| j        }| j        sG|                                 }||j        vrd S |j                            |           |j        |         }n	| j        }|}t          |j        j        z            }|r!t          dt          j
        j        z            t          ||          \  }}	|rt          |g|	R d|i}
nt          |g|	R  }
d|
_        |
S )N%r not supported	swap_dataT)get_current_objectr$   __gtktemplate_methods____gtktemplate_handlers__addintBuilderClosureFlagsSWAPPEDRuntimeErrorr   ConnectFlagsr   r   __gtk_template__)r%   builder	func_nameflagsobjcurrent_objectr   swappedr   r   pr   s              r   do_create_closurez<define_builder_scope.<locals>.BuilderScope.do_create_closure:   s   $7799OT=ON% 	)!(!;!;!=!=N$JJJ47;;IFFF-EiP!%!3(%#"9"AABBG "&)=)EEG G G 6nlSSMGT ,G:d:::c::G+d+++!%AHr   r!   )__name__
__module____qualname__r#   r<   __classcell__)r'   r   s   @r   BuilderScoper   4   sW        	. 	. 	. 	. 	. 	.	 	 	 	 	 	 	 	 	r   rA   )gi.repositoryr   r   rA   )rA   r   s    @r   define_builder_scoperC   1   sY    !!!!!!" " " " " " "w(8 " " "H r   c                    ||j         vrd S |j         |         }|                     |j                  }|j                            |           t          ||          }	t          |t          j        j	        z            }
t          |t          j        j
        z            }|r!t          dt          j        j
        z            | |
r|j        }n|j        } |||	|           d S |
r|j        }n|j        } |||	           d S )Nr)   )r,   
get_object__gtype_name__r-   r.   r   r/   r   r3   AFTERr1   r2   connect_object_afterconnect_objectconnect_afterconnect)r5   r8   signal_namer   rI   r7   clsmethod_nametemplate_instr   afterr:   funcs                r   connect_funcrR   [   s%    3666-l;K&&s'9::M*..|<<<m[11G,2233E%'.6677G ?!5!==? ? 	? ! 	&+DD%D['>22222 	$DD;D['"""""r   c           	         
 ddl m} i }i }t           j                                                  D ]\  }}t          |t                    rKt           ||j                   |j	        }||}||v r ||         }t          d|d|d|          |||<   et          |t                    rP|j	        }||}||v r ||         }t          d|d|d|          |||<                        ||j        d           | _        | _        |j        dk    r,t#                      }	                      |	                       n                     t(                       j        

 fd _         j         _        d S )	Nr   r   zError while exposing handler z as z, already available as zError while exposing child z4.0c                 &    t          |           S r!   )init_template)sbase_init_templaterM   s    r   <lambda>z#register_template.<locals>.<lambda>   s    -3(:;; r   )rB   r   list__dict__itemsr   	CallThingsetattr_func_namer2   Childbind_template_child_full	_internalr,   __gtktemplate_widgets___versionrC   set_template_scopeset_connect_funcrR   rU   __dontuse_ginstance_init__)rM   r   bound_methodsbound_widgets	attr_namer8   r   old_attr_namewidget_namerA   rW   s   `         @r   register_templaterm   z   s   !!!!!!MMs|113344 L L	3c9%% 	LCCI...9L#(},, -l ;"l %iii@A A A
 /8l++U## 	L)K"'m++ -k :"l $YYY?@ @ @
 .7k*,,[#-KKK"/C"/C
|u+--||~~....\3///*;;;;; " 6Cr   c                 p   d | _         | j        |urt          d          t                      | _         ||            | j                                        D ]#\  }}|                     ||          | j        |<   $| j	                                        D ] \  }}|| j        vrt          d|z            !d S )Nc                      d S r!   r	   r	   r   r   rX   zinit_template.<locals>.<lambda>   s     r   zRInheritance from classes with @Gtk.Template decorators is not allowed at this timezUHandler '%s' was declared with @Gtk.Template.Callback but was not present in template)rU   r'   r   setr-   rc   r[   get_template_childrZ   r,   r2   )r%   rM   rW   rl   rj   r   s         r   rU   rU      s    %D~S  *+ + 	+ %(EED!t"&">"D"D"F"F M MY#'#:#:3#L#Li  #'#?#E#E#G#G B Bit<<<24@AB B B =B Br   c                       e Zd ZddZdS )r`   Nc                 r    || _         |                    dd          | _        |rt          d|z            d S )NinternalFzUnhandled arguments: %r)r_   poprb   r   )r%   namekwargss      r   r#   zChild.__init__   sG    
J66 	@5>???	@ 	@r   r!   r=   r>   r?   r#   r	   r   r   r`   r`      s.        @ @ @ @ @ @r   r`   c                       e Zd Zd ZdS )r\   c                 "    || _         || _        d S r!   )r_   r^   )r%   rv   rQ   s      r   r#   zCallThing.__init__   s    



r   Nrx   r	   r   r   r\   r\      s#            r   r\   c                       e Zd ZddZd ZdS )CallbackNc                     || _         d S r!   )r_   )r%   rv   s     r   r#   zCallback.__init__   s    


r   c                 ,    t          | j        |          S r!   )r\   r_   )r%   rQ   s     r   __call__zCallback.__call__   s    T***r   r!   )r=   r>   r?   r#   r   r	   r   r   r|   r|      s7           + + + + +r   r|   c                     	 t          j        | t           j        j                   dS # t          j        $ r( t          j        | t           j        j                   Y dS w xY w)z4Raises GLib.Error in case the resource doesn't existN)r   resources_get_infoResourceLookupFlagsNONEr   Errorresources_lookup_data)paths    r   validate_resource_pathr      sl    FtS%<%ABBBBB: F F F 	!$(?(DEEEEEE	Fs   $( 3AAc                   d    e Zd Zd Zed             Zed             Zed             ZeZe	Z	d Z
dS )Templatec                 0   d | _         d | _        d | _        d|v r|                    d          | _         nMd|v r|                    d          | _        n.d|v r|                    d          | _        nt	          d          |rt	          d|z            d S )Nstringfilenameresource_pathzHRequires one of the following arguments: string, filename, resource_pathzUnhandled keyword arguments %r)r   r   r   ru   r   )r%   rw   s     r   r#   zTemplate.__init__   s    !v **X..DKK6!!"JJz22DMM&&!'O!<!<D23 3 3  	G<vEFFF	G 	Gr   c                      | |          S )N)r   r	   )rM   r   s     r   	from_filezTemplate.from_file   s    sH%%%%r   c                      | |          S )N)r   r	   )rM   r   s     r   from_stringzTemplate.from_string  s    s&!!!!r   c                      | |          S )N)r   r	   )rM   r   s     r   from_resourcezTemplate.from_resource  s    s////r   c                    ddl m} t          |t                    rt	          ||j                  st          d          d|j        vrt          d|j        z            t          |d          rt          d          | j
        v| j
        }t          |t                    s|                    d          }t          j                            |          }|                    |           t#          |           |S | j        ?t'          | j                   |                    | j                   t#          |           |S | j        J t,          j                            | j                  }t          j                            |                                d	                   }|                    |           t#          |           |S )
Nr   r   z%Can only use @Gtk.Template on WidgetsrF   zS%r does not have a __gtype_name__. Set it to the name of the class in your templater,   zCannot nest template classeszutf-8r
   )rB   r   r   type
issubclassWidgetr   rZ   r=   hasattrr   bytesencoder   Bytesnewset_templaterm   r   r   set_template_from_resourcer   r   Filenew_for_pathload_contents)r%   rM   r   databytes_file_s         r   r   zTemplate.__call__  s   %%%%%%#t$$ 	EJsCJ,G,G 	ECDDD3<//025,?@ @ @ 3122 	<:;;;;";DdE** ,{{7++Z^^D))FV$$$c"""J+"4#5666**4+=>>>c"""J=,,,H))$-88EZ^^E$7$7$9$9!$<==FV$$$c"""Jr   N)r=   r>   r?   r#   classmethodr   r   r   r|   r`   r   r	   r   r   r   r      s        G G G$ & & [& " " [" 0 0 [0 HE! ! ! ! !r   r   N)collectionsr   	functoolsr   rB   r   r   r   r   rC   rR   rm   rU   objectr`   r\   r|   r   r   __all__r	   r   r   <module>r      sq  (             , , , , , , , , , ,  .' ' 'T# # #>27 27 27jB B B,@ @ @ @ @F @ @ @       + + + + +v + + +	F 	F 	FE E E E Ev E E EP ,r   