
Vf              *   @   s@
  d  d l  Z  d  d l Z d  d l m Z d  d l 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 e j j Z e j j d  Z g  Z d  d	 l m Z e e  j d
 <x d d d d d d d d d d d d d d d d d d d d d d  d! d" d# g D]= Z e e
 e  e   e <e d e d$ e  e j e  q)Wx d% d& d' d( d) d* d+ d, d- d. d/ d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> d? d@ dA dB dC dD dE dF dG dH dI dJ dK dL dM dN g* D]a Z e j   + e j dO e  e e
 e  e   e <Wd QRXe d e d$ e  e j e  qWx dP dQ dR dS dT dU dV dW dX dY dZ d[ g D]S Z e j d\ d]  d Z  e e
 e   e   e <e d e d$ e   e j e  qWx d^ d_ d` da db dc dd de df dg dh di dj dk dl dm dn do g D]S Z e j d\ d]  d Z  e e
 e   e   e <e d e d$ e   e j e  qWe j! dp  Z" e j! dq  Z# e j! dr  Z$ e j! ds  Z% e j! dt  Z& e j! du  Z' e j! dv  Z( e j! dw  Z) e j! dx  Z* e j! dy  Z+ e j! dz  Z, e j! d{  Z- e j! d|  Z. e j! d}  Z/ e j! d~  Z0 e j! d  Z1 e j! d  Z2 e j! d  Z3 e j! d  Z4 e j! d  Z5 e j! d  Z6 e j! d  Z7 e j! d  Z8 e j! d  Z9 e j! d  Z: e j! d  Z; e j< j= Z> e) Z? e d d d d d d d d d d d d d d d d d d d d d d d d d d d d g 7Z xQ d d d d g D]= Z e e
 e  e   e <e d e d$ e  e j e  qsWxm d d d d d g D]V Z e j d\ d]  d Z  e e j@ e   e   e <e d e d e   e j e  qWe j@ jA e j@ jB BZC e j d  eD e j@ d  rie d d d  xs d d d d d d d g D]V Z e j d\ d]  d Z  e e jE e   e   e <e d e d e   e j e  qWe jF ZF e jG ZG e jH ZH e jI ZI e jJ ZJ e jK ZK e jL ZL e jM ZM e jN ZN e jO ZO e d d| d} dr d d d d d d g
 7Z e jP ZP e jQ ZQ e jR ZR e jS ZS e
 jT ZT e jU ZU e d d d d d d g 7Z Gd d   d e j<  Z< e e<  Z< e j d  d d   Z! e j d  d d   ZV e j d  d d   ZW d d   ZX e j d  d d   ZY e j d  d d   ZZ e j d  e d d d d d d d g  Z[ d d d  Z\ e j d  Gd d   d e]  Z^ d d   Z_ e j d  d d   Z` e j d  d d   Za e j d  d d d  Zb e j d  d d d  Zc e j d  e jd Zd e je Ze e d d g 7Z Gd d   d e]  Zf d d   Zg Gd d   d e jh  Zh e eh  Zh eh ZJ e d d g 7Z Gd d   d e ji  Zi e ei  Zi e j d  e jj Zj e jk Zk e jl Zl ej Zm e d d d  e d d d d g 7Z d S)    N)
namedtuple)overridedeprecated_attr)GLib)PyGIDeprecationWarning)_propertyhelper)_signalhelperGObject)_optionzgi._gobject.optionZ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ignoreZ	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invalid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_VALUEZPidZGErrorZOptionGroupZOptionContextZPARAM_CONSTRUCTZPARAM_CONSTRUCT_ONLYZPARAM_LAX_VALIDATIONZPARAM_READABLEZPARAM_WRITABLEzGObject.ParamFlags.PARAM_READWRITEZ	READWRITEz)GObject.ParamFlags.READWRITE (glib 2.42+)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Warningfeatureslist_propertiesnewpygobject_versionthreads_inittype_registerc                   sp   e  Z d  Z d d d d  Z   f d d   Z d d   Z d d	   Z d
 d   Z d d   Z d d   Z	   S)ValueNc             C   sF   t  j j |   | d  k	 rB |  j |  | d  k	 rB |  j |  d  S)N)GObjectModuler;   __init__Zinit	set_value)selfZ
value_typepy_value rA   6/usr/lib/python3/dist-packages/gi/overrides/GObject.pyr=      s
    zValue.__init__c                s9   |  j  r" |  j t k r" |  j   t t |   j   d  S)N)Z_free_on_deallocg_typer   Zunsetsuperr;   __del__)r?   )	__class__rA   rB   rE      s    
zValue.__del__c             C   s   t  j |  |  d  S)N)_gobjectZ_gvalue_set)r?   ZboxedrA   rA   rB   	set_boxed   s    zValue.set_boxedc             C   s   t  j |   S)N)rG   Z_gvalue_get)r?   rA   rA   rB   	get_boxed   s    zValue.get_boxedc             C   s>  |  j  } | t j k r' t d   n| t k rC |  j |  n| t k r_ |  j |  n| t k r{ |  j	 |  n| t
 k r |  j |  n| t k r |  j |  n| t k r |  j |  nk| t k r |  j |  nO| t k r|  j |  n3| t k r#|  j |  n| t k r?|  j |  n| t k r[|  j |  n| t k r t | t  rt |  } nk t j d k  rt | t  r| j  d  } qt! d | t" |  f   n t! d | t" |  f   |  j# |  n:| t$ k r|  j% |  n| j& t'  r;|  j( |  n | j& t)  rZ|  j* |  n | j& t+  ry|  j, |  n | t- k r|  j. |  n | j& t/  r|  j0 |  n | t1 k r|  j t2 |   nd | t3 k r|  j4 |  nH | t5 k r|  j6 |  n, | t7 k r*|  j, |  n t d |   d  S)	Nz+GObject.Value needs to be initialized first   r   zUTF-8z'Expected string or unicode but got %s%szExpected string but got %s%szUnknown value type %s)rJ   r   )8rC   rG   r   	TypeErrorr   Zset_booleanr   Zset_charr   Z	set_ucharr   Zset_intr   Zset_uintr   Zset_longr   Z	set_ulongr   Z	set_int64r   Z
set_uint64r"   Z	set_floatr#   Z
set_doubler$   
isinstancestrsysversion_infoZunicodeencode
ValueErrortypeZ
set_stringr'   Z	set_paramis_ar    Zset_enumr!   Z	set_flagsr&   rH   r%   Zset_pointerr(   Z
set_objectr.   intr*   Z	set_gtyper,   Zset_variantr)   )r?   r@   gtyperA   rA   rB   r>      sr    	zValue.set_valuec             C   s  |  j  } | t k r |  j   S| t k r5 |  j   S| t k rK |  j   S| t k ra |  j   S| t	 k rw |  j
   S| t k r |  j   S| t k r |  j   S| t k r |  j   S| t k r |  j   S| t k r |  j   S| t k r |  j   S| t k r|  j   S| t k r'|  j   S| j t  r@|  j   S| j t  rY|  j   S| j t   rr|  j!   S| t" k r|  j#   S| j t$  r|  j%   S| t& k r|  j
   S| t' k r|  j(   S| t) k r|  j*   S| t+ k rn d  Sd  S)N),rC   r   Zget_booleanr   Zget_charr   Z	get_ucharr   Zget_intr   Zget_uintr   Zget_longr   Z	get_ulongr   Z	get_int64r   Z
get_uint64r"   Z	get_floatr#   Z
get_doubler$   Z
get_stringr'   Z	get_paramrS   r    Zget_enumr!   Z	get_flagsr&   rI   r%   Zget_pointerr(   Z
get_objectr.   r*   Z	get_gtyper,   Zget_variantr)   )r?   rU   rA   rA   rB   	get_value-  s\    	




















zValue.get_valuec             C   s   d |  j  j |  j   f S)Nz<Value (%s) %s>)rC   namerV   )r?   rA   rA   rB   __repr___  s    zValue.__repr__)
__name__
__module____qualname__r=   rE   rH   rI   r>   rV   rX   rA   rA   )rF   rB   r;      s   A2r;   c             C   s/   t  j |   } | t k r+ t d |    | S)Nzunknown type name: %s)r<   type_from_namer   RuntimeError)rW   type_rA   rA   rB   r\   f  s    r\   c             C   s+   t  j |   } | t k r' t d   | S)Nzno parent for type)r<   type_parentr   r]   )r^   parentrA   rA   rB   r_   o  s    r_   c             C   sF   t  |  d  r |  j }  |  j   rB |  j   rB t d |    d  S)N	__gtype__z1type must be instantiable or an interface, got %s)hasattrra   Zis_instantiatableZis_interfacerK   )r^   rA   rA   rB    _validate_type_for_signal_methodx  s    	rc   c             C   s   t  |   t j |   S)N)rc   r<   signal_list_ids)r^   rA   rA   rB   rd     s    
rd   c             C   s#   t  |   } t d d   | D  S)Nc             s   s   |  ] } t  j |  Vq d  S)N)r<   signal_name).0irA   rA   rB   	<genexpr>  s    z$signal_list_names.<locals>.<genexpr>)rd   tuple)r^   ZidsrA   rA   rB   signal_list_names  s    rj   c             C   s   t  |  t j |  |  S)N)rc   r<   signal_lookup)rW   r^   rA   rA   rB   rk     s    
rk   SignalQuery	signal_idre   itypesignal_flagsreturn_typeparam_typesc             C   s~   | d  k	 r t  |  |  }  t j |   } | d  k r: d  S| j d k rM d  St | j | j | j | j | j t	 | j
   S)Nr   )rk   r<   signal_queryrm   rl   re   rn   ro   rp   ri   rq   )Z
id_or_namer^   resrA   rA   rB   rr     s    rr   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)_HandlerBlockManagerc             C   s   | |  _  | |  _ d  S)N)obj
handler_id)r?   ru   rv   rA   rA   rB   r=     s    	z_HandlerBlockManager.__init__c             C   s   d  S)NrA   )r?   rA   rA   rB   	__enter__  s    z_HandlerBlockManager.__enter__c             C   s   t  j |  j |  j  d  S)N)r<   signal_handler_unblockru   rv   )r?   exc_type	exc_value	tracebackrA   rA   rB   __exit__  s    z_HandlerBlockManager.__exit__N)rY   rZ   r[   r=   rw   r|   rA   rA   rA   rB   rt     s   rt   c             C   s   t  j |  |  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_blockrt   )ru   rv   rA   rA   rB   r}     s    r}   c             C   sH   t  j |  | |  \ } } } | r. | | f St 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_namerQ   )detailed_signalrn   Zforce_detail_quarkrs   rm   detailrA   rA   rB   r~     s
    
r~   c             C   s,   t  | |  d  \ } } t j | |  d  S)NT)r~   r<   Zsignal_remove_emission_hook)ru   r   Zhook_idrm   r   rA   rA   rB   remove_emission_hook  s    r   c             C   s
   d | f S)NFrA   )ihintreturn_accuhandler_return	user_datarA   rA   rB   signal_accumulator_first_wins  s    r   c             C   s   | | f S)NrA   )r   r   r   r   rA   rA   rB   signal_accumulator_true_handled  s    r   add_emission_hook
signal_newc               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)_FreezeNotifyManagerc             C   s   | |  _  d  S)N)ru   )r?   ru   rA   rA   rB   r=     s    z_FreezeNotifyManager.__init__c             C   s   d  S)NrA   )r?   rA   rA   rB   rw     s    z_FreezeNotifyManager.__enter__c             C   s   |  j  j   d  S)N)ru   Zthaw_notify)r?   ry   rz   r{   rA   rA   rB   r|     s    z_FreezeNotifyManager.__exit__N)rY   rZ   r[   r=   rw   r|   rA   rA   rA   rB   r     s   r   c                s(   t  j j      f d d    } | S)Nc                 s     |  |   S)NrA   )argskwargs)funcrA   rB   meth  s    z_signalmethod.<locals>.meth)giZ	overrideswraps)r   r   rA   )r   rB   _signalmethod  s    $r   c                   s  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 j0 Z0   f d d   Z1 d d   Z2 e3 Z4 e5 e j6  Z7 e5 e j8  Z9 e5 e j8  Z: e5 e j;  Z< e5 e j=  Z> d	 d
   Z? e? Z@   S)Objectc             O   s   t  d   d  S)Nz%This method is currently unsupported.)r]   )r?   r   kargsrA   rA   rB   _unsupported_method"  s    zObject._unsupported_methodc             O   s   t  d   d  S)NzIData access methods are unsupported. Use normal Python attributes instead)r]   )r?   r   r   rA   rA   rB   _unsupported_data_method%  s    zObject._unsupported_data_methodc                s   t  t |   j   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
        )rD   r   freeze_notifyr   )r?   )rF   rA   rB   r   ]  s    zObject.freeze_notifyc                s   | j  d d  } | t j j @r1 t j j } n t j j } | t j j @r t	 |  d k rr t
 d | g     f d d   } n   } | |  | | |  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                s2   t  |  } | j   } | |  g }   | |  S)N)listpop)ru   r   Zswap)handlerrA   rB   new_handler  s    z(Object.connect_data.<locals>.new_handler)getr<   ZConnectFlagsZAFTERrG   r	   connect_afterconnectZSWAPPEDlenrQ   )r?   r   r   datar   flagsZconnect_funcr   rA   )r   rB   connect_datao  s    zObject.connect_datac             C   s)   t  j |  j j t d d |  j |  S)z-Deprecated, please use stop_emission_by_name.
stacklevel   )warningswarnstop_emission__doc__r   stop_emission_by_name)r?   r   rA   rA   rB   r     s    zObject.stop_emission)ArY   rZ   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_floatingrG   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   rx   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_namerA   rA   )rF   rB   r   !  sh   )r   c                   s.   e  Z d  Z d d   Z   f d d   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.r   r   )r   r   r   )r?   rA   rA   rB   __call__  s    	zBinding.__call__c                sE   t  |  d  r t d   n# t |  d d  t t |   j   d  S)NZ_unboundz$binding has already been cleared outT)rb   rQ   setattrrD   r   unbind)r?   )rF   rA   rB   r     s    zBinding.unbind)rY   rZ   r[   r   r   rA   rA   )rF   rB   r     s   r   propertyzGObject.PropertyPropertySignalSignalOverrider   r   r   )nrN   r   collectionsr   Zgi.overridesr   Z	gi.moduler   r   Zgi.repositoryr   r   r   Zpropertyhelperr   ZsignalhelperZ_girG   moduleZget_introspection_moduler<   __all__r
   ZoptionmodulesrW   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;   ra   r/   r.   Z
ParamFlagsZREADABLEZWRITABLEr0   rb   ZSignalFlagsr   r   r   r   r	   r1   r2   r3   r   r4   r5   r6   r7   r8   r9   r:   r_   rc   rd   rj   rk   rl   rr   objectrt   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   rA   rA   rA   rB   <module>   s  																								
								
			