a 8b`'@sddlmZddlmZddlmZmZmZddZddZ dd Z d d Z d d Z Gddde ZGddde ZGddde ZddZGddde ZdgZdS))abc)partial)GLibGObjectGiocCsd}t|tjr||d}n t||d}|dur>td|d}t|tjr|t|dkrftd||dd}|d}nt |std|||fS)NzHandler %s not foundrz!Handler %s tuple can not be emptyz-Handler %s is not a method, function or tuple) isinstancerMappinggetgetattrAttributeErrorSequencelen TypeErrorcallable)Z obj_or_map handler_namehandlerargsrr5/usr/lib64/python3.9/site-packages/gi/_gtktemplate.py_extract_handler_and_argss         rcs*ddlmGfdddtjj}|S)NrGtkcs*eZdZdfdd ZfddZZS)z*define_builder_scope..BuilderScopeNcst||_dSN)super__init__ _scope_object)selfZ scope_object __class__rrr6s z3define_builder_scope..BuilderScope.__init__c s|p |j}|jsB|}||jvr*dS|j||j|}n |j}|}t|jj@}|rttdt j jdSt ||\}} |rt |g| Rd|i} nt |g| R} d| _ | S)N%r not supportedZ swap_dataT)Zget_current_objectr__gtktemplate_methods____gtktemplate_handlers__addintZBuilderClosureFlagsSWAPPED RuntimeErrorr ConnectFlagsrrZ__gtk_template__) rbuilderZ func_nameflagsobjZcurrent_objectrswappedrrprrrdo_create_closure:s*    z.BuilderScope.do_create_closure)N)__name__ __module__ __qualname__rr- __classcell__rrrr BuilderScope4sr2) gi.repositoryrrr2)r2rrrdefine_builder_scope1s $r4c Cs||jvrdS|j|}||j}|j|t||} t|tjj @} t|tjj @} | rnt dtjj |dur| r|j } n|j } | || |n| r|j} n|j} | || dS)Nr )r!Z get_object__gtype_name__r"r#r r$rr'ZAFTERr%r&Zconnect_object_afterconnect_objectZ connect_afterZconnect) r(r*Z signal_namerr6r)clsZ method_nameZ template_instrZafterr+funcrrr connect_func[s*      r9c s6ddlm}i}i}tjD]\}}t|trt||j|j }|durT|}||vrx||}t d|||fq|||<q"t|t r"|j }|dur|}||vr||}t d|||fq"|||< ||j dq"|_|_|jdkrt} | n tjfdd_j_dS)Nrrz>Error while exposing handler %r as %r, already available as %rzz#register_template..)r3rlist__dict__itemsr CallThingsetattr_func_namer&ChildZbind_template_child_full _internalr!__gtktemplate_widgets__Z_versionr4Zset_template_scopeZset_connect_funcr9r:Z__dontuse_ginstance_init__) r7rZ bound_methodsZ bound_widgets attr_namer*rZ old_attr_name widget_namer2rr<rregister_templatezsT       rLcCsdd|_|j|urtdt|_|||jD]\}}||||j|<q6|j D]\}}||jvr\t d|q\dS)NcSsdSrrrrrrr>r?zinit_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) r:rrsetr"rIrBZget_template_childrAr!r&)rr7r=rKrJrrrrr:s    r:c@seZdZdddZdS)rGNcKs(||_|dd|_|r$td|dS)NZinternalFzUnhandled arguments: %r)rFpoprHr)rnamekwargsrrrrszChild.__init__)Nr.r/r0rrrrrrGsrGc@seZdZddZdS)rCcCs||_||_dSr)rFrE)rrOr8rrrrszCallThing.__init__NrQrrrrrCsrCc@seZdZdddZddZdS)CallbackNcCs ||_dSr)rF)rrOrrrrszCallback.__init__cCs t|j|Sr)rCrF)rr8rrr__call__szCallback.__call__)N)r.r/r0rrSrrrrrRs rRcCs>zt|tjjWn$tjy8t|tjjYn0dS)z4Raises GLib.Error in case the resource doesn't existN)rZresources_get_infoZResourceLookupFlagsZNONErErrorZresources_lookup_data)pathrrrvalidate_resource_pathsrVc@sHeZdZddZeddZeddZeddZeZe Z d d Z d S) TemplatecKspd|_d|_d|_d|vr(|d|_n4d|vr>|d|_nd|vrT|d|_ntd|rltd|dS)Nstringfilename resource_pathzHRequires one of the following arguments: string, filename, resource_pathzUnhandled keyword arguments %r)rXrYrZrNr)rrPrrrrszTemplate.__init__cCs ||dS)N)rYr)r7rYrrr from_fileszTemplate.from_filecCs ||dS)N)rXr)r7rXrrr from_stringszTemplate.from_stringcCs ||dS)N)rZr)r7rZrrr from_resourceszTemplate.from_resourcecCsddlm}t|tr"t||js*tdd|jvrBtd|jt |drTtd|j dur|j }t|t sx| d}t j|}||t||S|jdurt|j||jt||Stj|j}t j|d }||t||SdS) Nrrz%Can only use @Gtk.Template on Widgetsr5zS%r does not have a __gtype_name__. Set it to the name of the class in your templater!zCannot nest template classeszutf-8r)r3rr type issubclassZWidgetrrAr.hasattrrXbytesencoderZBytesnewZ set_templaterLrZrVZset_template_from_resourcerZFileZ new_for_pathrYZ load_contents)rr7rdataZbytes_Zfile_rrrrSs:            zTemplate.__call__N) r.r/r0r classmethodr[r\r]rRrGrSrrrrrWs   rWN) collectionsr functoolsrr3rrrrr4r9rLr:objectrGrCrRrVrW__all__rrrrs  *5   H