Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ‰å<_r&ã@sjddlZddlmZdejko(dknr6dd„ZGdd „d eƒZGd d „d eƒZd d „Zdd„Z dS)éNé)Ú_giéécCs t|dƒS)NÚ__call__)Úhasattr)Úfn©r ú%/usr/lib64/python3.6/_signalhelper.pyÚcallablesr c@sjeZdZdZGdd„deƒZddd„Zddejdddddfdd „Z dd d „Z d d „Z ddd„Z dd„Z dS)ÚSignala¸Object which gives a nice API for creating and binding signals. :param name: Name of signal or callable closure when used as a decorator. :type name: str or callable :param callable func: Callable closure method. :param GObject.SignalFlags flags: Flags specifying when to run closure. :param type return_type: Return type of the Signal. :param list arg_types: List of argument types specifying the signals function signature :param str doc: Documentation of signal object. :param callable accumulator: Accumulator method with the signature: func(ihint, return_accu, handler_return, accu_data) -> boolean :param object accu_data: User data passed to the accumulator. :Example: .. code-block:: python class Spam(GObject.Object): velocity = 0 @GObject.Signal def pushed(self): self.velocity += 1 @GObject.Signal(flags=GObject.SignalFlags.RUN_LAST) def pulled(self): self.velocity -= 1 stomped = GObject.Signal('stomped', arg_types=(int,)) @GObject.Signal def annotated_signal(self, a:int, b:str): "Python3 annotation support for parameter types. def on_pushed(obj): print(obj) spam = Spam() spam.pushed.connect(on_pushed) spam.pushed.emit() c@sPeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dS)zSignal.BoundSignalz‘ Temporary binding object which can be used for connecting signals without specifying the signal name string to connect. cOs tj||ƒS)N)ÚstrÚ__new__)ÚclsÚnameÚargsÚkargsr r r rXszSignal.BoundSignal.__new__cCstj|ƒ||_||_dS)N)r Ú__init__ÚsignalÚgobj)Úselfrrr r r r[s zSignal.BoundSignal.__init__cCsd|S)NzBoundSignal("%s")r )rr r r Ú__repr__`szSignal.BoundSignal.__repr__cOs|jj|jf|ž|ŽS)zCall the signals closure.)rÚfuncr)rrrr r r rcszSignal.BoundSignal.__call__cOs|jj||f|ž|ŽS)z^Same as GObject.Object.connect except there is no need to specify the signal name.)rÚconnect)rÚcallbackrrr r r rgszSignal.BoundSignal.connectcOs|jj|d||f|ž|ŽS)a Same as GObject.Object.connect except there is no need to specify the signal name. In addition concats "::" to the signal name when connecting; for use with notifications like "notify" when a property changes. z::)rr)rrZdetailrrr r r Úconnect_detailedlsz#Signal.BoundSignal.connect_detailedcCs|jj|ƒdS)z"Same as GObject.Object.disconnect.N)ÚinstanceÚ disconnect)rZ handler_idr r r rtszSignal.BoundSignal.disconnectcOs|jjt|ƒf|ž|ŽS)z[Same as GObject.Object.emit except there is no need to specify the signal name.)rÚemitr )rrrr r r rxszSignal.BoundSignal.emitN) Ú__name__Ú __module__Ú __qualname__Ú__doc__rrrrrrrrr r r r Ú BoundSignalSsr#ÚcOst|ƒr|j}tj||ƒS)N)r rr r)rrrrr r r r}szSignal.__new__Nc Cs”|r| r|j}nt|ƒr$|}|j}|r4| r4|j}tj|ƒ|rX|pH| rXt|ƒ\}}|dkrftƒ}||_||_||_ ||_ ||_||_ ||_ dS)N) rr r"r rÚget_signal_annotationsÚtuplerÚflagsÚ return_typeÚ arg_typesÚ accumulatorÚ accu_data) rrrr'r(r)Údocr*r+r r r r‚s&    zSignal.__init__cCs|dkr |S|j||ƒS)z:Returns a BoundSignal when accessed on an object instance.N)r#)rrÚownerr r r Ú__get__›szSignal.__get__c Osdt|tjƒr |j|f|ž|Žn@t|ƒr2t|ƒ}n|j}t|ƒ|||j|j|j |j |j |j d�SdS)zmAllows for instantiated Signals to be used as a decorator or calling of the underlying signal method.)rrr'r(r)r,r*r+N) Ú isinstancerZGObjectrr rÚtyper'r(r)r"r*r+)rÚobjrrrr r r r¡s  zSignal.__call__c Cs8|dkr|j}t|ƒ||j|j|j|j|j|j|jd�S)z%Returns a renamed copy of the Signal.N)rrr'r(r)r,r*r+) rr0rr'r(r)r"r*r+)rZnewNamer r r Úcopyµs z Signal.copycCs|j|j|j|j|jfS)zKReturns a tuple of: (flags, return_type, arg_types, accumulator, accu_data))r'r(r)r*r+)rr r r Úget_signal_args½szSignal.get_signal_args)r$)N)N)rr r!r"r r#rrZSIGNAL_RUN_FIRSTrr.rr2r3r r r r r !s1*   r c@seZdZdZdd„ZdS)ÚSignalOverridea&Specialized sub-class of Signal which can be used as a decorator for overriding existing signals on GObjects. :Example: .. code-block:: python class MyWidget(Gtk.Widget): @GObject.SignalOverride def configure_event(self): pass cCsdS)zReturns the string 'override'.Úoverrider )rr r r r3ÏszSignalOverride.get_signal_argsN)rr r!r"r3r r r r r4Âs r4csZtƒ}d}t|dƒrRddl}|j|ƒ‰t‡fdd„ˆjDƒƒ}dˆjkrRˆjd}||fS)aAttempt pulling python 3 function annotations off of 'func' for use as a signals type information. Returns an ordered nested tuple of (return_type, (arg_type1, arg_type2, ...)). If the given function does not have annotations then (None, tuple()) is returned. NÚ__annotations__rc3s"|]}|ˆjkrˆj|VqdS)N)Ú annotations)Ú.0Úarg)Úspecr r ú ász)get_signal_annotations..Úreturn)r&rÚinspectZgetfullargspecrr7)rr)r(r=r )r:r r%Ôs    r%cCsÔ|jjdiƒ}i}xn|jjƒD]`\}}t|tƒrt|ƒ}|sV|}|j|ƒ}t|||ƒ||krjtd|ƒ‚|||<|j ƒ||<qW||_ xF|jƒD]:\}}|j dk r’d|j ddƒ}t ||ƒs’t|||j ƒq’WdS)z”Adds Signal instances on a GObject derived class into the '__gsignals__' dictionary to be picked up and registered as real GObject signals. Ú __gsignals__z(Signal "%s" has already been registered.NZdo_ú-Ú_)Ú__dict__ÚgetÚitemsr/r r r2ÚsetattrÚ ValueErrorr3r>rÚreplacer)rZgsignalsZ newsignalsrrZ signalNameZfuncNamer r r Úinstall_signalsés&      rG)rr)rr) Úsysr$rÚ version_infor r r r4r%rGr r r r Ús "