o
    `^                  	   @   s  d dl Z d dlZd dlmZ d dlZd dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ ejd	Zg Zd d
lmZ eZdD ]Zee
ee e< ed	ede  ee qJdD ]1Ze  ede ee
ee e< W d   n1 sw   Y  ed	ede  ee qddD ]Zeddd Zee
ee e< ed	ede  ee qdD ]Zeddd Zee
ee e< ed	ede  ee qedZ edZ!edZ"edZ#edZ$edZ%edZ&edZ'edZ(edZ)edZ*edZ+ed Z,ed!Z-ed"Z.ed#Z/ed$Z0ed%Z1ed&Z2ed'Z3ed	Z4ed(Z5ed)Z6ed*Z7ed+Z8ed,Z9ej:j;Z<e'Z=eg d-7 Zd.D ]Zee
ee e< ed	ede  ee qjd/D ]!Zeddd Zeej>ee e< ed	ed0e  ee qej>j?ej>j@B ZAed	d1d2 ed1 d3D ]!Zeddd ZeejBee e< ed	ed4e  ee qejCZCejDZDejEZEejFZFejGZGejHZHejIZIejJZJejKZKejLZLeg d57 Zd6d7iZMejNZNejOZOejPZPe
jQZQejRZReg d87 ZG d9d: d:ej:Z:ee:Z:ed: d;d< Zed< d=d> ZSed> d?d@ ZTdAdB ZUedB dCdD ZVedD dEdF ZWedF edGg dHZXdddIdJZYedJ G dKdL dLeZZ[dMdN Z\edN dOdP Z]edP dQdR Z^edR dddSdTZ_edT dddUdVZ`edV ejaZaejbZbedWdXg7 ZG dYdZ dZeZZcd[d\ ZdG d]d^ d^ejeZeeeeZeeeZGed^d	g7 ZG d_d` d`ejfZfeefZfed` ejgZgejhZhejiZiegZjed	dadb eg dc7 ZdS )e    N)
namedtuple)overridedeprecated_attr)GLib)PyGIDeprecationWarning)_propertyhelper)_signalhelper)_giGObject)_option)Zmarkup_escape_textZget_application_nameZset_application_nameZget_prgnameZset_prgnameZ
main_depthZfilename_display_basenameZfilename_display_nameZfilename_from_utf8Zuri_list_extract_urisZMainLoopZMainContextZmain_context_defaultZsource_removeZSourceZIdleZTimeoutZPollFDZidle_addZtimeout_addZtimeout_add_secondsZio_add_watchZchild_watch_addZget_current_timeZspawn_asynczGLib.)*ZPRIORITY_DEFAULTZPRIORITY_DEFAULT_IDLEZPRIORITY_HIGHZPRIORITY_HIGH_IDLEZPRIORITY_LOWZIO_INZIO_OUTZIO_PRIZIO_ERRZIO_HUPZIO_NVALZIO_STATUS_ERRORZIO_STATUS_NORMALZIO_STATUS_EOFZIO_STATUS_AGAINZIO_FLAG_APPENDZIO_FLAG_NONBLOCKZIO_FLAG_IS_READABLEZIO_FLAG_IS_WRITEABLEZIO_FLAG_IS_SEEKABLEZIO_FLAG_MASKZIO_FLAG_GET_MASKZIO_FLAG_SET_MASKZSPAWN_LEAVE_DESCRIPTORS_OPENZSPAWN_DO_NOT_REAP_CHILDZSPAWN_SEARCH_PATHZSPAWN_STDOUT_TO_DEV_NULLZSPAWN_STDERR_TO_DEV_NULLZSPAWN_CHILD_INHERITS_STDINZSPAWN_FILE_AND_ARGV_ZEROZOPTION_FLAG_HIDDENZOPTION_FLAG_IN_MAINZOPTION_FLAG_REVERSEZOPTION_FLAG_NO_ARGZOPTION_FLAG_FILENAMEZOPTION_FLAG_OPTIONAL_ARGZOPTION_FLAG_NOALIASZOPTION_ERROR_UNKNOWN_OPTIONZOPTION_ERROR_BAD_VALUEZOPTION_ERROR_FAILEDZOPTION_REMAININGZglib_versionignore)Z	G_MININT8Z	G_MAXINT8Z
G_MAXUINT8Z
G_MININT16Z
G_MAXINT16ZG_MAXUINT16Z
G_MININT32Z
G_MAXINT32ZG_MAXUINT32Z
G_MININT64Z
G_MAXINT64ZG_MAXUINT64_   )Z
G_MINFLOATZ
G_MAXFLOATZG_MINDOUBLEZG_MAXDOUBLEZ
G_MINSHORTZ
G_MAXSHORTZG_MAXUSHORTZG_MININTZG_MAXINTZ	G_MAXUINTZ	G_MINLONGZ	G_MAXLONGZ
G_MAXULONGZ	G_MAXSIZEZ
G_MINSSIZEZ
G_MAXSSIZEZG_MINOFFSETZG_MAXOFFSETZinvalidZvoid
GInterfaceZgcharZgucharZgbooleanZgintZguintZglongZgulongZgint64Zguint64GEnumGFlagsZgfloatZgdoubleZ
gchararrayZgpointerGBoxedZGParamZPyObjectGTypeZGStrvZGVariantZGString)TYPE_INVALID	TYPE_NONETYPE_INTERFACE	TYPE_CHAR
TYPE_UCHARTYPE_BOOLEANTYPE_INT	TYPE_UINT	TYPE_LONG
TYPE_ULONG
TYPE_INT64TYPE_UINT64	TYPE_ENUM
TYPE_FLAGS
TYPE_FLOATTYPE_DOUBLETYPE_STRINGTYPE_POINTER
TYPE_BOXED
TYPE_PARAMTYPE_OBJECTTYPE_PYOBJECT
TYPE_GTYPE	TYPE_STRVTYPE_VARIANTTYPE_GSTRINGTYPE_UNICHAR
TYPE_VALUE)ZPidZGErrorZOptionGroupZOptionContext)ZPARAM_CONSTRUCTZPARAM_CONSTRUCT_ONLYZPARAM_LAX_VALIDATIONZPARAM_READABLEZPARAM_WRITABLEzGObject.ParamFlags.PARAM_READWRITEzGObject.ParamFlags.READWRITE)ZSIGNAL_ACTIONZSIGNAL_DETAILEDZSIGNAL_NO_HOOKSZSIGNAL_NO_RECURSEZSIGNAL_RUN_CLEANUPZSIGNAL_RUN_FIRSTZSIGNAL_RUN_LASTzGObject.SignalFlags.)
r   r   r   r   r
   GObjectWeakRef
GParamSpecGPointerr   Warningzgeneric-c-marshallerT)featureslist_propertiesnewpygobject_versionthreads_inittype_registerc                   @   sJ   e Zd ZdddZedd Zdd Zdd	 Zd
d Zdd Z	dd Z
dS )ValueNc                 C   s<   t j|  |d ur| | |d ur| | d S d S d S N)GObjectModuler<   __init__Zinit	set_value)selfZ
value_typepy_value rC   6/usr/lib/python3/dist-packages/gi/overrides/GObject.pyr?      s   
zValue.__init__c                 C   s
   t | S r=   )r	   Z_gvalue_get_typerA   rC   rC   rD   Z__g_type   s   
zValue.__g_typec                 C   s,   | j tstjdtdd t| | d S )Nz2Calling set_boxed() on a non-boxed type deprecated   
stacklevel)_Value__g_typeis_ar'   warningswarnr   r	   _gvalue_set)rA   ZboxedrC   rC   rD   	set_boxed   s
   zValue.set_boxedc                 C   s&   | j tstjdtdd t| S )Nz2Calling get_boxed() on a non-boxed type deprecatedrF   rG   )rI   rJ   r'   rK   rL   r   r	   _gvalue_getrE   rC   rC   rD   	get_boxed   s
   
zValue.get_boxedc                 C   s  | j }|tkr| | d S |tkr| | d S |tkr8t|ts0|d ur0td|t	|f t
| | d S |tkrC| | d S |trO| | d S |tkrZ| | d S |tkre| | d S |tkrp| | d S z	t
| | W d S  ty   |tkrtd w )NzExpected string but got %s%sz+GObject.Value needs to be initialized first)rI   r   Zset_charr   Z	set_ucharr%   
isinstancestr	TypeErrortyper	   rM   r(   Z	set_paramrJ   r"   Z	set_flagsr&   Zset_pointerr+   Z	set_gtyper-   Zset_variantr   )rA   rB   gtyperC   rC   rD   r@      s8   

zValue.set_valuec                 C   s   | j }|tkr|  S |tkr|  S |tkr|  S |tr$| 	 S |t
r-|  S |tkr5|  S |tkr=|  S |tkrE|  S zt| W S  tyZ   |tkrYY d S  w r=   )rI   r   Zget_charr   Z	get_ucharr(   Z	get_paramrJ   r!   Zget_enumr"   Z	get_flagsr&   Zget_pointerr+   Z	get_gtyper-   Zdup_variantr	   rO   rS   r   )rA   rU   rC   rC   rD   	get_value  s0   

zValue.get_valuec                 C   s   d| j j|  f S )Nz<Value (%s) %s>)rI   namerV   rE   rC   rC   rD   __repr__$     zValue.__repr__)NN)__name__
__module____qualname__r?   propertyrI   rN   rP   r@   rV   rX   rC   rC   rC   rD   r<      s    

	 r<   c                 C   s"   t | }|tkrtd|  |S )Nzunknown type name: %s)r>   type_from_namer   RuntimeErrorrW   type_rC   rC   rD   r^   ,  s   
r^   c                 C   s   t | }|tkrtd|S )Nzno parent for type)r>   type_parentr   r_   )ra   parentrC   rC   rD   rb   6  s   
rb   c                 C   s4   t | dr| j} |  s|  std|  d S d S )N	__gtype__z1type must be instantiable or an interface, got %s)hasattrrd   Zis_instantiatableZis_interfacerS   ra   rC   rC   rD    _validate_type_for_signal_method@  s
   
rg   c                 C   s   t |  t| S r=   )rg   r>   signal_list_idsrf   rC   rC   rD   rh   G  s   
rh   c                 C   s   t | }tdd |D S )Nc                 s   s    | ]}t |V  qd S r=   )r>   signal_name).0irC   rC   rD   	<genexpr>Q  s    z$signal_list_names.<locals>.<genexpr>)rh   tuple)ra   ZidsrC   rC   rD   signal_list_namesO  s   rn   c                 C   s   t | t| |S r=   )rg   r>   signal_lookupr`   rC   rC   rD   ro   W  s   ro   SignalQuery)	signal_idri   itypesignal_flagsreturn_typeparam_typesc                 C   sX   |d ur	t | |} t| }|d usJ |jdkrd S t|j|j|j|j|jt	|j
S )Nr   )ro   r>   signal_queryrq   rp   ri   rr   rs   rt   rm   ru   )Z
id_or_namera   resrC   rC   rD   rv   i  s   


rv   c                   @   $   e Zd Zdd Zdd Zdd ZdS )_HandlerBlockManagerc                 C   s   || _ || _d S r=   obj
handler_id)rA   r{   r|   rC   rC   rD   r?     s   
z_HandlerBlockManager.__init__c                 C      d S r=   rC   rE   rC   rC   rD   	__enter__     z_HandlerBlockManager.__enter__c                 C   s   t | j| j d S r=   )r>   signal_handler_unblockr{   r|   rA   exc_type	exc_value	tracebackrC   rC   rD   __exit__  rY   z_HandlerBlockManager.__exit__NrZ   r[   r\   r?   r~   r   rC   rC   rC   rD   ry     s    ry   c                 C   s   t | | t| |S )a  Blocks the signal handler from being invoked until
    handler_unblock() is called.

    :param GObject.Object obj:
        Object instance to block handlers for.
    :param int handler_id:
        Id of signal to block.
    :returns:
        A context manager which optionally can be used to
        automatically unblock the handler:

    .. code-block:: python

        with GObject.signal_handler_block(obj, id):
            pass
    )r>   signal_handler_blockry   rz   rC   rC   rD   r     s   
r   c                 C   s0   t | ||\}}}|r||fS td|| f )a%  Parse a detailed signal name into (signal_id, detail).

    :param str detailed_signal:
        Signal name which can include detail.
        For example: "notify:prop_name"
    :returns:
        Tuple of (signal_id, detail)
    :raises ValueError:
        If the given signal is unknown.
    z%s: unknown signal name: %s)r>   signal_parse_name
ValueError)detailed_signalrr   Zforce_detail_quarkrw   rq   detailrC   rC   rD   r     s   
r   c                 C   s    t || d\}}t|| d S )NT)r   r>   Zsignal_remove_emission_hook)r{   r   Zhook_idrq   r   rC   rC   rD   remove_emission_hook  s   r   c                 C   s   d|fS )NFrC   ZihintZreturn_accuZhandler_returnZ	user_datarC   rC   rD   signal_accumulator_first_wins  s   r   c                 C   s
   | |fS r=   rC   r   rC   rC   rD   signal_accumulator_true_handled  s   
r   add_emission_hook
signal_newc                   @   rx   )_FreezeNotifyManagerc                 C   s
   || _ d S r=   )r{   )rA   r{   rC   rC   rD   r?     s   
z_FreezeNotifyManager.__init__c                 C   r}   r=   rC   rE   rC   rC   rD   r~     r   z_FreezeNotifyManager.__enter__c                 C   s   | j   d S r=   )r{   Zthaw_notifyr   rC   rC   rD   r     s   z_FreezeNotifyManager.__exit__Nr   rC   rC   rC   rD   r     s    r   c                    s   t   fdd}|S )Nc                     s    | i |S r=   rC   )argskwargsfuncrC   rD   meth  s   z_signalmethod.<locals>.meth)	functoolswraps)r   r   rC   r   rD   _signalmethod  s   r   c                       sf  e Zd Zdd Zdd ZeZeZeZeZeZ	eZ
eZeZeZeZeZeZeZeZejjZejjZejjZejjZeZeZeZeZejjZejj Z ejj!Z!ejj"Z"ejj#Z#ejj$Z$ejj%Z%ejj&Z&ejj'Z'ejj(Z(ejj)Z)ejj*Z*ejj+Z+ejj,Z,ejj-Z-ejj.Z.ejj/Z/ fddZ0dd Z1e2Z3e4ej5Z6e4ej7Z8e4ej7Z9e4ej:Z;e4ej<Z=d	d
 Z>e>Z?  Z@S )Objectc                 O      t d)Nz%This method is currently unsupported.r_   rA   r   ZkargsrC   rC   rD   _unsupported_method     zObject._unsupported_methodc                 O   r   )NzIData access methods are unsupported. Use normal Python attributes insteadr   r   rC   rC   rD   _unsupported_data_method  r   zObject._unsupported_data_methodc                    s   t t|   t| S )a  Freezes the object's property-changed notification queue.

        :returns:
            A context manager which optionally can be used to
            automatically thaw notifications.

        This will freeze the object so that "notify" signals are blocked until
        the thaw_notify() method is called.

        .. code-block:: python

            with obj.freeze_notify():
                pass
        )superr   freeze_notifyr   rE   	__class__rC   rD   r   ,  s   zObject.freeze_notifyc                    sv   | dd}|tjj@ rtjj}ntjj}|tjj@ r/t	|dkr(t
d|g  fdd}n }|| ||g|R  S )a   Connect a callback to the given signal with optional user data.

        :param str detailed_signal:
            A detailed signal to connect to.
        :param callable handler:
            Callback handler to connect to the signal.
        :param *data:
            Variable data which is passed through to the signal handler.
        :param GObject.ConnectFlags connect_flags:
            Flags used for connection options.
        :returns:
            A signal id which can be used with disconnect.
        Zconnect_flagsr   r   zWUsing GObject.ConnectFlags.SWAPPED requires exactly one argument for user data, got: %sc                    s*   t |}| }|| g } |g|R  S r=   )listpop)r{   r   ZswaphandlerrC   rD   new_handlerW  s   
z(Object.connect_data.<locals>.new_handler)getr>   ZConnectFlagsZAFTERr	   r
   connect_afterconnectZSWAPPEDlenr   )rA   r   r   datar   flagsZconnect_funcr   rC   r   rD   connect_data>  s   
zObject.connect_datac                 C   s   t j| jjtdd | |S )z-Deprecated, please use stop_emission_by_name.rF   rG   )rK   rL   stop_emission__doc__r   stop_emission_by_name)rA   r   rC   rC   rD   r   r  s   
zObject.stop_emission)ArZ   r[   r\   r   r   get_dataZ	get_qdataset_dataZ
steal_dataZsteal_qdataZreplace_dataZreplace_qdataZbind_property_fullZcompat_controlZinterface_find_propertyZinterface_install_propertyZinterface_list_propertiesZnotify_by_pspecZwatch_closurer>   r   refZ_refZref_sinkZ	_ref_sinkZunrefZ_unrefZforce_floatingZ_force_floatingr	   r
   Zget_propertyZget_propertiesZset_propertyZset_propertiesZbind_propertyr   r   Zconnect_objectZconnect_object_afterZdisconnect_by_funcZhandler_block_by_funcZhandler_unblock_by_funcemitchainZweak_ref__copy____deepcopy__r   r   r   Zhandler_blockr   r   Zhandler_unblockZsignal_handler_disconnectZ
disconnectZhandler_disconnectZsignal_handler_is_connectedZhandler_is_connectedZsignal_stop_emission_by_namer   r   Zemit_stop_by_name__classcell__rC   rC   r   rD   r     sh    )




r   c                       s$   e Zd Zdd Z fddZ  ZS )Bindingc                 C   s   t jdtdd | S )NzUsing parentheses (binding()) to retrieve the Binding object is no longer needed because the binding is returned directly from "bind_property.rF   rG   )rK   rL   r   rE   rC   rC   rD   __call__  s   zBinding.__call__c                    sR   t jt jt jfdkrtt|  S t| drtdt	| dd tt|   d S )N)rF   9      Z_unboundz$binding has already been cleared outT)
r   ZMAJOR_VERSIONZMINOR_VERSIONZMICRO_VERSIONr   r   unbindre   r   setattrrE   r   rC   rD   r     s   
zBinding.unbind)rZ   r[   r\   r   r   r   rC   rC   r   rD   r     s    r   r]   zGObject.Property)PropertySignalSignalOverrider]   r=   )kr   rK   collectionsr   Z	gi.moduleZgiZgi.overridesr   r   Zgi.repositoryr   r   r   Zpropertyhelperr   Zsignalhelperr	   moduleZget_introspection_moduler>   __all__r   optionrW   getattrglobalsappendcatch_warningssimplefiltersplitnew_namer^   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r<   rd   r0   r/   Z
ParamFlagsZREADABLEZWRITABLEr1   ZSignalFlagsr   r   r   r   r
   r2   r3   r4   r   r5   r6   r7   r8   r9   r:   r;   rb   rg   rh   rn   ro   rp   rv   objectry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   rC   rC   rC   rD   <module>   s,  





























^
















 

