o + \b'@sddlmZddlmZddlmZmZmZddZddZ dd Z d d Z d d Z Gddde ZGddde ZGddde ZddZGddde ZdgZdS))abc)partial)GLibGObjectGiocCsd}t|tjr||d}nt||d}|durtd|d}t|tjrAt|dkr3td||dd}|d}||fSt |sKtd|||fS)NzHandler %s not foundrz!Handler %s tuple can not be emptyz-Handler %s is not a method, function or tuple) isinstancerMappinggetgetattrAttributeErrorSequencelen TypeErrorcallable) obj_or_map handler_namehandlerargsrr1/usr/lib/python3/dist-packages/gi/_gtktemplate.py_extract_handler_and_argss         rcs*ddlmGfdddtjj}|S)NrGtkcs*eZdZdfdd ZfddZZS)z*define_builder_scope..BuilderScopeNcst||_dSN)super__init__ _scope_object)self scope_object __class__rrr6s  z3define_builder_scope..BuilderScope.__init__c s|p|j}|js!|}||jvrdS|j||j|}n|j}|}t|jj@}|r8tdt j jt ||\}} |rMt |g| Rd|i} nt |g| R} d| _ | S)N%r not supported swap_dataT)get_current_objectr__gtktemplate_methods____gtktemplate_handlers__addintBuilderClosureFlagsSWAPPED RuntimeErrorr ConnectFlagsrr__gtk_template__) rbuilder func_nameflagsobjcurrent_objectrswappedrrprrrdo_create_closure:s(    z.BuilderScope.do_create_closurer)__name__ __module__ __qualname__rr5 __classcell__rrr r BuilderScope4sr:) gi.repositoryrrr:)r:rrrdefine_builder_scope1s $r<c Cs||jvrdS|j|}||j}|j|t||} t|tjj @} t|tjj @} | r7t dtjj |durL| rA|j } n|j } | || |dS| rR|j} n|j} | || dS)Nr")r% get_object__gtype_name__r&r'r r(rr,AFTERr*r+connect_object_afterconnect_object connect_afterconnect) r.r1 signal_namerrAr0cls method_name template_instrafterr3funcrrr connect_func[s*      rJc s0ddlm}i}i}tjD]Z\}}t|tr@t||j|j }|dur*|}||vr;||}t d|||f|||<qt|t rk|j }|durN|}||vr_||}t d|||f|||< ||j dq|_|_|jdkrt} | ntjfdd_j_dS)Nrrz>Error while exposing handler %r as %r, already available as %rzs z#register_template..)r;rlist__dict__itemsr CallThingsetattr_func_namer+Childbind_template_child_full _internalr%__gtktemplate_widgets___versionr<set_template_scopeset_connect_funcrJrK__dontuse_ginstance_init__) rEr bound_methods bound_widgets attr_namer1r old_attr_name widget_namer:rrMrregister_templatezsV        rdcCsdd|_|j|urtdt|_|||jD] \}}||||j|<q|j D]\}}||jvr=t d|q.dS)NcSsdSrrrrrrrOszinit_template..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) rKr!rsetr&rZrRget_template_childrQr%r+)rrErNrcrarrrrrKs$   rKc@seZdZdddZdS)rWNcKs(||_|dd|_|rtd|dS)NinternalFzUnhandled arguments: %r)rVpoprYr)rnamekwargsrrrrs  zChild.__init__rr6r7r8rrrrrrWsrWc@seZdZddZdS)rScCs||_||_dSr)rVrU)rrirIrrrrs zCallThing.__init__NrkrrrrrSs rSc@seZdZdddZddZdS)CallbackNcCs ||_dSr)rV)rrirrrrs zCallback.__init__cCs t|j|Sr)rSrV)rrIrrr__call__s zCallback.__call__r)r6r7r8rrmrrrrrls  rlcCs>z t|tjjWdStjyt|tjjYdSw)z4Raises GLib.Error in case the resource doesn't existN)rresources_get_infoResourceLookupFlagsNONErErrorresources_lookup_data)pathrrrvalidate_resource_paths rtc@sHeZdZddZeddZeddZeddZeZe Z d d Z d S) TemplatecKspd|_d|_d|_d|vr|d|_nd|vr|d|_nd|vr*|d|_ntd|r6td|dS)Nstringfilename resource_pathzHRequires one of the following arguments: string, filename, resource_pathzUnhandled keyword arguments %r)rvrwrxrhr)rrjrrrrs zTemplate.__init__cC ||dS)N)rwr)rErwrrr from_file zTemplate.from_filecCry)N)rvr)rErvrrr from_stringr{zTemplate.from_stringcCry)N)rxr)rErxrrr from_resourcer{zTemplate.from_resourcecCs ddlm}t|trt||jstdd|jvr!td|jt |dr*td|j durM|j }t|t s<| d}t j|}||t||S|jdurct|j||jt||S|jdusjJtj|j}t j|d }||t||S) Nrrz%Can only use @Gtk.Template on Widgetsr>zS%r does not have a __gtype_name__. Set it to the name of the class in your templater%zCannot nest template classeszutf-8r)r;rr type issubclassWidgetrrQr6hasattrrvbytesencoderBytesnew set_templaterdrxrtset_template_from_resourcerwrFile new_for_path load_contents)rrErdatabytes_file_rrrrms<            zTemplate.__call__N) r6r7r8r classmethodrzr|r}rlrWrmrrrrrus    ruN) collectionsr functoolsrr;rrrrr<rJrdrKobjectrWrSrlrtru__all__rrrrs  *5   H