
    f'                         d dl Z 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y)    N)abc)partial)GLibGObjectGioc                 `   d }t        | t        j                        r| j                  |d       }nt	        | |d       }|t        d|z        d}t        |t        j                        r*t        |      dk(  rt        d|z        |dd  }|d   }||fS 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*ckk*..t4*lD93lBCCD'3<<(w<1?'IJJqr{!*
 D= gG'QRRD=    c                  `    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>.BuilderScopec                 0    t         |           || _        y N)super__init___scope_object)selfscope_object	__class__s     r   r#   z3define_builder_scope.<locals>.BuilderScope.__init__7   s    G!-Dr   c                    |j                         xs | j                  }| j                  sJ|j                         }||j                  vry |j                  j	                  |       |j                  |   }n| j                  }|}t        |j                  j                  z        }|r&t        dt        j                  j                  z        t        ||      \  }}	|rt        |g|	d|i}
nt        |g|	 }
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OT=O=ON%%!(!;!;!=N$J$JJ77;;IF-EEiP!%!3!3(%#"9"9"A"AABG"&)=)=)E)EEG G 6nlSMGTG:d:c:G+d+!%AHr   r!   )__name__
__module____qualname__r#   r<   __classcell__)r'   r   s   @r   BuilderScoper   5   s    	.	 	r   rA   )gi.repositoryr   r   rA   )rA   r   s    @r   define_builder_scoperC   2   s'    !"w(8(8 "H r   c                 D   ||j                   vry |j                   |   }| j                  |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                  } |||	|       y |
r|j                  }n|j                  } |||	       y )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'9:M**..|<m[1G,,2223E%'..6667G!5!5!=!==? 	? !++D%%D['>2$$D;;D['"r   c           	         
 ddl m} i }i }t         j                  j	                               D ]  \  }}t        |t              rJt         ||j                         |j                  }||}||v r||   }t        d|d|d|      |||<   `t        |t              sq|j                  }||}||v r||   }t        d|d|d|      |||<    j                  ||j                  d        | _        | _        |j                   dk(  r!t#               }	 j%                   |	              n j'                  t(                 j*                  

 fd _         j,                   _        y )	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   {   s}   !MMs||1134 L	3c9%CCII.99L#(}, -l ;" %i@A A
 /8l+U#))K"'m+ -k :" $Y?@ @
 .7k*,,[#--K9L< #0C"/C
||u+-|~.\3/**; " 66Cr   c                 r   d | _         | j                  |urt        d      t               | _         ||        | j
                  j                         D ]$  \  }}| j                  ||      | j                  |<   & | j                  j                         D ]!  \  }}|| j                  vst        d|z         y )Nc                       y 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 *+ 	+ %(ED!t"&">">"D"D"F MY#'#:#:3#Li M $(#?#?#E#E#G Bit<<<24@AB BBr   c                       e Zd ZddZy)r`   Nc                 `    || _         |j                  dd      | _        |rt        d|z        y )NinternalFzUnhandled arguments: %r)r_   poprb   r   )r%   namekwargss      r   r#   zChild.__init__   s4    
J65>?? r   r!   r=   r>   r?   r#   r	   r   r   r`   r`      s    @r   r`   c                       e Zd Zd Zy)r\   c                      || _         || _        y 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y)CallbackNc                     || _         y 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|      s    +r   r|   c                     	 t        j                  | t         j                  j                         y# t        j
                  $ r1 t        j                  | t         j                  j                         Y y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      sW    FtS%<%<%A%AB:: F 	!!$(?(?(D(DE	Fs   .1 AA54A5c                   P    e Zd Zd Zed        Zed        Zed        ZeZe	Z	d Z
y)Templatec                    d | _         d | _        d | _        d|v r|j                  d      | _         nAd|v r|j                  d      | _        n&d|v r|j                  d      | _        nt	        d      |rt	        d|z        y )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.DK6!"JJz2DM&!'O!<D23 3 <vEFF r   c                      | |      S )N)r   r	   )rM   r   s     r   	from_filezTemplate.from_file   s    H%%r   c                      | |      S )N)r   r	   )rM   r   s     r   from_stringzTemplate.from_string  s    &!!r   c                      | |      S )N)r   r	   )rM   r   s     r   from_resourcezTemplate.from_resource  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                  j| j                  }t        |t              s|j                  d      }t        j                  j                  |      }|j!                  |       t#        |       |S | j$                  =t'        | j$                         |j)                  | j$                         t#        |       |S | j*                  J t,        j.                  j1                  t3        j4                  | j*                              }t        j                  j                  |j7                         d	         }|j!                  |       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osfspathload_contents)r%   rM   r   databytes_file_s         r   r   zTemplate.__call__  sl   %#t$JsCJJ,GCDD3<</025,,?@ @ 312:;;;;";;DdE*{{7+ZZ^^D)FV$c"J+"4#5#56**4+=+=>c"J==,,,HH))"))DMM*BCEZZ^^E$7$7$9!$<=FV$c"Jr   N)r=   r>   r?   r#   classmethodr   r   r   r|   r`   r   r	   r   r   r   r      sU    G$ & & " " 0 0 HE!r   r   )r   collectionsr   	functoolsr   rB   r   r   r   r   rC   rR   rm   rU   objectr`   r\   r|   r   r   __all__r	   r   r   <module>r      sv   ( 
   , ,.'T#>27jB,@F @ +v +	FEv EP ,r   