U
    ÂÛ	^@`  ã                   @   sT  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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¡ q¤dD ]NZe ¡ " e de¡ ee
eƒeƒ e< W 5 Q R X ed
ede ƒ e e¡ qØdD ]@Ze  dd¡d Z!ee
e!ƒeƒ e< ed
ede! ƒ e e¡ q,dD ]@Ze  dd¡d Z!ee
e!ƒeƒ e< ed
ede! ƒ e e¡ qre "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 "d+¡Z:e "d,¡Z;e "d-¡Z<ej=j>Z?e*Z@ed.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIg7 ZdJD ]0Zee
eƒeƒ e< ed
ede ƒ e e¡ qdKD ]BZe  dd¡d Z!eejAe!ƒeƒ e< ed
edLe! ƒ e e¡ q>ejAjBejAjCB ZDed
dMdNƒ e dM¡ dOD ]BZe  dd¡d Z!eejEe!ƒeƒ e< ed
edPe! ƒ e e¡ q¬ejFZFejGZGejHZHejIZIejJZJejKZKejLZLejMZMejNZNejOZOed'd!d"dd
dQdRdSd*dTg
7 ZdUdViZPejQZQejRZRejSZSe
jTZTejUZUedWdXdYdZd[d\g7 ZG d]d^„ d^ej=ƒZ=ee=ƒZ=e d^¡ d_d`„ Z"e d`¡ dadb„ ZVe db¡ dcdd„ ZWdedf„ ZXe df¡ dgdh„ ZYe dh¡ didj„ ZZe dj¡ edkdldmdndodpdqgƒZ[ddrds„Z\e ds¡ G dtdu„ due]ƒZ^dvdw„ Z_e dw¡ dxdy„ Z`e dy¡ dzd{„ Zae d{¡ dd|d}„Zbe d}¡ d‘d~d„Zce d¡ ejdZdejeZeed€dg7 ZG d‚dƒ„ dƒe]ƒZfd„d…„ ZgG d†d‡„ d‡ejhƒZheehƒZhehZJed‡d
g7 ZG dˆd‰„ d‰ejiƒZieeiƒZie d‰¡ ejjZjejkZkejlZlejZmed
dŠd‹ƒ edŒddŽdŠg7 ZdS )’é    N)Ú
namedtuple)ÚoverrideÚdeprecated_attr)ÚGLib)ÚPyGIDeprecationWarning)ÚPY2Ú	text_type)Ú_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.ÚGObjectWeakRefÚ
GParamSpecÚGPointerÚ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   s4   t j | ¡ |d k	r0|  |¡ |d k	r0|  |¡ d S ©N)ÚGObjectModuler>   Ú__init__ZinitÚ	set_value)ÚselfZ
value_typeÚpy_value© rE   ú6/usr/lib/python3/dist-packages/gi/overrides/GObject.pyrA   Í   s
    
zValue.__init__c                 C   s
   t  | ¡S r?   )r   Z_gvalue_get_type©rC   rE   rE   rF   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)rC   ZboxedrE   rE   rF   Ú	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 deprecatedrH   rI   )rK   rL   r)   rM   rN   r   r   Ú_gvalue_getrG   rE   rE   rF   Ú	get_boxedã   s     ÿzValue.get_boxedc                 C   sF  | j }|tkr|  |¡ n&|tkr2|  |¡ n|tkržt|tƒs|d k	rtr|t|t	ƒrf| 
d¡}qtd|t|ƒf ƒ‚ntd|t|ƒf ƒ‚t | |¡ n¤|tkr²|  |¡ n| t¡rÈ|  |¡ nz|tkrÜ|  |¡ nf|tkrð|  |¡ nR|tkr|  |¡ n<zt | |¡ W n* tk
r@   |tkr:tdƒ‚‚ Y nX d S )NzUTF-8z'Expected string or unicode but got %s%szExpected string but got %s%sz+GObject.Value needs to be initialized first)rK   r   Zset_charr   Z	set_ucharr'   Ú
isinstanceÚstrr   r   ÚencodeÚ	TypeErrorÚtyper   rO   r*   Z	set_paramrL   r$   Z	set_flagsr(   Zset_pointerr-   Z	set_gtyper/   Zset_variantr   )rC   rD   ÚgtyperE   rE   rF   rB   é   sB    

ÿ
ÿ


zValue.set_valuec                 C   sÀ   | j }|tkr|  ¡ S |tkr&|  ¡ S |tkr6|  ¡ S | t¡rH|  	¡ S | t
¡rZ|  ¡ S |tkrj|  ¡ S |tkrz|  ¡ S |tkrŠ|  ¡ S zt | ¡W S  tk
rº   |tkr´Y d S ‚ Y nX d S r?   )rK   r   Zget_charr   Z	get_ucharr*   Z	get_paramrL   r#   Zget_enumr$   Z	get_flagsr(   Zget_pointerr-   Z	get_gtyper/   Zdup_variantr   rQ   rV   r   )rC   rX   rE   rE   rF   Ú	get_value  s.    

zValue.get_valuec                 C   s   d| j j|  ¡ f S )Nz<Value (%s) %s>)rK   ÚnamerY   rG   rE   rE   rF   Ú__repr__-  s    zValue.__repr__)NN)Ú__name__Ú
__module__Ú__qualname__rA   ÚpropertyrK   rP   rR   rB   rY   r[   rE   rE   rE   rF   r>   Ì   s   

	'r>   c                 C   s"   t  | ¡}|tkrtd|  ƒ‚|S )Nzunknown type name: %s)r@   Útype_from_namer   ÚRuntimeError©rZ   Útype_rE   rE   rF   r`   5  s    
r`   c                 C   s   t  | ¡}|tkrtdƒ‚|S )Nzno parent for type)r@   Útype_parentr   ra   )rc   ÚparentrE   rE   rF   rd   ?  s    
rd   c                 C   s0   t | dƒr| j} |  ¡ s,|  ¡ s,td|  ƒ‚d S )NÚ	__gtype__z1type must be instantiable or an interface, got %s)Úhasattrrf   Zis_instantiatableZis_interfacerV   ©rc   rE   rE   rF   Ú _validate_type_for_signal_methodI  s    
ri   c                 C   s   t | ƒ t | ¡S r?   )ri   r@   Úsignal_list_idsrh   rE   rE   rF   rj   P  s    rj   c                 C   s   t | ƒ}tdd„ |D ƒƒS )Nc                 s   s   | ]}t  |¡V  qd S r?   )r@   Úsignal_name)Ú.0ÚirE   rE   rF   Ú	<genexpr>Z  s     z$signal_list_names.<locals>.<genexpr>)rj   Útuple)rc   ZidsrE   rE   rF   Úsignal_list_namesX  s    rp   c                 C   s   t |ƒ t | |¡S r?   )ri   r@   Úsignal_lookuprb   rE   rE   rF   rq   `  s    rq   ÚSignalQueryÚ	signal_idrk   ÚitypeÚsignal_flagsÚreturn_typeÚparam_typesc                 C   sX   |d k	rt | |ƒ} t | ¡}|d k	s(t‚|jdkr6d S t|j|j|j|j|j	t
|jƒƒS )Nr   )rq   r@   Úsignal_queryÚAssertionErrorrs   rr   rk   rt   ru   rv   ro   rw   )Z
id_or_namerc   ÚresrE   rE   rF   rx   r  s    


 þrx   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_HandlerBlockManagerc                 C   s   || _ || _d S r?   ©ÚobjÚ
handler_id)rC   r}   r~   rE   rE   rF   rA   ‰  s    z_HandlerBlockManager.__init__c                 C   s   d S r?   rE   rG   rE   rE   rF   Ú	__enter__  s    z_HandlerBlockManager.__enter__c                 C   s   t  | j| j¡ d S r?   )r@   Úsignal_handler_unblockr}   r~   ©rC   Úexc_typeÚ	exc_valueÚ	tracebackrE   rE   rF   Ú__exit__  s    z_HandlerBlockManager.__exit__N©r\   r]   r^   rA   r   r…   rE   rE   rE   rF   r{   ˆ  s   r{   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_blockr{   r|   rE   rE   rF   r‡   ”  s    r‡   c                 C   s4   t  | ||¡\}}}|r ||fS td|| f ƒ‚dS )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: %sN)r@   Úsignal_parse_nameÚ
ValueError)Údetailed_signalrt   Zforce_detail_quarkrz   rs   ÚdetailrE   rE   rF   rˆ   ¬  s    ÿ
rˆ   c                 C   s    t || dƒ\}}t ||¡ d S )NT)rˆ   r@   Zsignal_remove_emission_hook)r}   rŠ   Zhook_idrs   r‹   rE   rE   rF   Úremove_emission_hookÂ  s    rŒ   c                 C   s   d|fS )NFrE   ©ZihintZreturn_accuZhandler_returnZ	user_datarE   rE   rF   Úsignal_accumulator_first_winsÍ  s    rŽ   c                 C   s
   | |fS r?   rE   r   rE   rE   rF   Úsignal_accumulator_true_handledÕ  s    r   Úadd_emission_hookÚ
signal_newc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú_FreezeNotifyManagerc                 C   s
   || _ d S r?   )r}   )rC   r}   rE   rE   rF   rA   æ  s    z_FreezeNotifyManager.__init__c                 C   s   d S r?   rE   rG   rE   rE   rF   r   é  s    z_FreezeNotifyManager.__enter__c                 C   s   | j  ¡  d S r?   )r}   Zthaw_notifyr   rE   rE   rF   r…   ì  s    z_FreezeNotifyManager.__exit__Nr†   rE   rE   rE   rF   r’   å  s   r’   c                    s   t  ˆ ¡‡ fdd„ƒ}|S )Nc                     s
   ˆ | |ŽS r?   rE   )ÚargsÚkwargs©ÚfuncrE   rF   Úmethô  s    z_signalmethod.<locals>.meth)Ú	functoolsÚwraps)r–   r—   rE   r•   rF   Ú_signalmethodð  s    rš   c                       sj  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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j0Z0‡ fdd„Z1dd„ Z2e3Z4e5ej6ƒZ7e5ej8ƒZ9e5ej8ƒZ:e5ej;ƒZ<e5ej=ƒZ>d	d
„ Z?e?Z@‡  ZAS )ÚObjectc                 O   s   t dƒ‚d S )Nz%This method is currently unsupported.©ra   ©rC   r“   ZkargsrE   rE   rF   Ú_unsupported_methodû  s    zObject._unsupported_methodc                 O   s   t dƒ‚d S )NzIData access methods are unsupported. Use normal Python attributes insteadrœ   r   rE   rE   rF   Ú_unsupported_data_methodþ  s    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’   rG   ©Ú	__class__rE   rF   r¡   6  s    zObject.freeze_notifyc                    st   |  dd¡}|tjj@ r"tjj}ntjj}|tjj@ r^t	|ƒdkrPt
d|g ƒ‚‡ fdd„}nˆ }|| ||f|žŽ 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 }ˆ |f|žŽ S r?   )ÚlistÚpop)r}   r“   Zswap©ÚhandlerrE   rF   Únew_handlera  s    
z(Object.connect_data.<locals>.new_handler)Úgetr@   ZConnectFlagsZAFTERr   r   Úconnect_afterÚconnectZSWAPPEDÚlenr‰   )rC   rŠ   r§   Údatar”   ÚflagsZconnect_funcr¨   rE   r¦   rF   Úconnect_dataH  s    
ÿzObject.connect_datac                 C   s   t j| jjtdd |  |¡S )z-Deprecated, please use stop_emission_by_name.rH   rI   )rM   rN   Ústop_emissionÚ__doc__r   Ústop_emission_by_name)rC   rŠ   rE   rE   rF   r°   |  s    zObject.stop_emission)Br\   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run_disposeZ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__rE   rE   r¢   rF   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 )NzŽUsing parentheses (binding()) to retrieve the Binding object is no longer needed because the binding is returned directly from "bind_property.rH   rI   )rM   rN   r   rG   rE   rE   rF   Ú__call__Š  s
     þzBinding.__call__c                    sT   t jt jt jfdkr"tt| ƒ ¡ S t| dƒr6tdƒ‚nt	| ddƒ tt| ƒ ¡  d S )N)rH   é9   é   Z_unboundz$binding has already been cleared outT)
r   ZMAJOR_VERSIONZMINOR_VERSIONZMICRO_VERSIONr    r»   Úunbindrg   r‰   ÚsetattrrG   r¢   rE   rF   r¿     s    

zBinding.unbind)r\   r]   r^   r¼   r¿   rº   rE   rE   r¢   rF   r»   ‰  s   r»   r_   zGObject.PropertyÚPropertyÚSignalÚSignalOverride)N)N)N)nr˜   rM   Úcollectionsr   Z	gi.moduleZgiZgi.overridesr   r   Zgi.repositoryr   r   Z
gi._compatr   r   r	   Zpropertyhelperr
   Zsignalhelperr   ÚmoduleZget_introspection_moduler@   Ú__all__r   ZoptionrZ   Ú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/   r0   r>   rf   r2   r1   Z
ParamFlagsZREADABLEZWRITABLEr3   ZSignalFlagsr   r   r   r   r   r4   r5   r6   r   r7   r8   r9   r:   r;   r<   r=   rd   ri   rj   rp   rq   rr   rx   Úobjectr{   r‡   rˆ   rŒ   rŽ   r   r   r‘   r’   rš   r›   r»   rÁ   rÂ   rÃ   r_   rE   rE   rE   rF   Ú<module>   s|  




























                  ú
ÿ
   þ  ÿe





úÿ

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