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)markup_escape_textget_application_nameset_application_nameget_prgnameset_prgname
main_depthfilename_display_basenamefilename_display_namefilename_from_utf8uri_list_extract_urisMainLoopMainContextmain_context_defaultsource_removeSourceIdleTimeoutPollFDidle_addtimeout_addtimeout_add_secondsio_add_watchchild_watch_addget_current_timespawn_asynczGLib.)*PRIORITY_DEFAULTPRIORITY_DEFAULT_IDLEPRIORITY_HIGHPRIORITY_HIGH_IDLEPRIORITY_LOWIO_INIO_OUTIO_PRIIO_ERRIO_HUPIO_NVALIO_STATUS_ERRORIO_STATUS_NORMALIO_STATUS_EOFIO_STATUS_AGAINIO_FLAG_APPENDIO_FLAG_NONBLOCKIO_FLAG_IS_READABLEIO_FLAG_IS_WRITEABLEIO_FLAG_IS_SEEKABLEIO_FLAG_MASKIO_FLAG_GET_MASKIO_FLAG_SET_MASKSPAWN_LEAVE_DESCRIPTORS_OPENSPAWN_DO_NOT_REAP_CHILDSPAWN_SEARCH_PATHSPAWN_STDOUT_TO_DEV_NULLSPAWN_STDERR_TO_DEV_NULLSPAWN_CHILD_INHERITS_STDINSPAWN_FILE_AND_ARGV_ZEROOPTION_FLAG_HIDDENOPTION_FLAG_IN_MAINOPTION_FLAG_REVERSEOPTION_FLAG_NO_ARGOPTION_FLAG_FILENAMEOPTION_FLAG_OPTIONAL_ARGOPTION_FLAG_NOALIASOPTION_ERROR_UNKNOWN_OPTIONOPTION_ERROR_BAD_VALUEOPTION_ERROR_FAILEDOPTION_REMAININGglib_versionignore)	G_MININT8	G_MAXINT8
G_MAXUINT8
G_MININT16
G_MAXINT16G_MAXUINT16
G_MININT32
G_MAXINT32G_MAXUINT32
G_MININT64
G_MAXINT64G_MAXUINT64_   )
G_MINFLOAT
G_MAXFLOATG_MINDOUBLEG_MAXDOUBLE
G_MINSHORT
G_MAXSHORTG_MAXUSHORTG_MININTG_MAXINT	G_MAXUINT	G_MINLONG	G_MAXLONG
G_MAXULONG	G_MAXSIZE
G_MINSSIZE
G_MAXSSIZEG_MINOFFSETG_MAXOFFSETinvalidvoid
GInterfacegcharguchargbooleangintguintglonggulonggint64guint64GEnumGFlagsgfloatgdouble
gchararraygpointerGBoxedGParamPyObjectGTypeGStrvGVariant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)PidGErrorOptionGroupOptionContext)PARAM_CONSTRUCTPARAM_CONSTRUCT_ONLYPARAM_LAX_VALIDATIONPARAM_READABLEPARAM_WRITABLEzGObject.ParamFlags.PARAM_READWRITEzGObject.ParamFlags.READWRITE)SIGNAL_ACTIONSIGNAL_DETAILEDSIGNAL_NO_HOOKSSIGNAL_NO_RECURSESIGNAL_RUN_CLEANUPSIGNAL_RUN_FIRSTSIGNAL_RUN_LASTzGObject.SignalFlags.)
r   r}   r~   rs   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__init	set_value)self
value_typepy_value r   6/usr/lib/python3/dist-packages/gi/overrides/GObject.pyr      s   
zValue.__init__c                 C   s
   t | S r   )r	   _gvalue_get_typer   r   r   r   __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)r   boxedr   r   r   	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 deprecatedr   r   )r   r   r   r   r   r   r	   _gvalue_getr   r   r   r   	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)r   r   set_charr   	set_ucharr   
isinstancestr	TypeErrortyper	   r   r   	set_paramr   r   	set_flagsr   set_pointerr   	set_gtyper   set_variantr   )r   r   gtyper   r   r   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   )r   r   get_charr   	get_ucharr   	get_paramr   r   get_enumr   	get_flagsr   get_pointerr   	get_gtyper   dup_variantr	   r   r   r   )r   r   r   r   r   	get_value  s0   

zValue.get_valuec                 C   s   d| j j|  f S )Nz<Value (%s) %s>)r   namer   r   r   r   r   __repr__$     zValue.__repr__)NN)__name__
__module____qualname__r   propertyr   r   r   r   r   r   r   r   r   r   r      s    

	 r   c                 C   s"   t | }|tkrtd|  |S )Nzunknown type name: %s)r   type_from_namer   RuntimeErrorr   type_r   r   r   r   ,  s   
r   c                 C   s   t | }|tkrtd|S )Nzno parent for type)r   type_parentr   r   )r   parentr   r   r   r   6  s   
r   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)hasattrr   is_instantiatableis_interfacer   r   r   r   r    _validate_type_for_signal_method@  s
   
r  c                 C   s   t |  t| S r   )r  r   signal_list_idsr  r   r   r   r  G  s   
r  c                 C   s   t | }tdd |D S )Nc                 s   s    | ]}t |V  qd S r   )r   signal_name).0ir   r   r   	<genexpr>Q  s    z$signal_list_names.<locals>.<genexpr>)r  tuple)r   idsr   r   r   signal_list_namesO  s   r
  c                 C   s   t | t| |S r   )r  r   signal_lookupr   r   r   r   r  W  s   r  SignalQuery)	signal_idr  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   )r  r   signal_queryr  r  r  r  r  r  r  r  )
id_or_namer   resr   r   r   r  i  s   


r  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)r   r  r  r   r   r   r     s   
z_HandlerBlockManager.__init__c                 C      d S r   r   r   r   r   r   	__enter__     z_HandlerBlockManager.__enter__c                 C   s   t | j| j d S r   )r   signal_handler_unblockr  r  r   exc_type	exc_value	tracebackr   r   r   __exit__  r   z_HandlerBlockManager.__exit__Nr   r   r   r   r  r"  r   r   r   r   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  r   r   r   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_signalr  force_detail_quarkr  r  detailr   r   r   r%    s   
r%  c                 C   s    t || d\}}t|| d S )NT)r%  r   signal_remove_emission_hook)r  r'  hook_idr  r)  r   r   r   remove_emission_hook  s   r,  c                 C   s   d|fS )NFr   ihintreturn_accuhandler_return	user_datar   r   r   signal_accumulator_first_wins  s   r2  c                 C   s
   | |fS r   r   r-  r   r   r   signal_accumulator_true_handled  s   
r3  add_emission_hook
signal_newc                   @   r  )_FreezeNotifyManagerc                 C   s
   || _ d S r   )r  )r   r  r   r   r   r     s   
z_FreezeNotifyManager.__init__c                 C   r  r   r   r   r   r   r   r    r  z_FreezeNotifyManager.__enter__c                 C   s   | j   d S r   )r  thaw_notifyr  r   r   r   r"    s   z_FreezeNotifyManager.__exit__Nr#  r   r   r   r   r6    s    r6  c                    s   t   fdd}|S )Nc                     s    | i |S r   r   )argskwargsfuncr   r   meth  s   z_signalmethod.<locals>.meth)	functoolswraps)r;  r<  r   r:  r   _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   r   r8  kargsr   r   r   _unsupported_method     zObject._unsupported_methodc                 O   rA  )NzIData access methods are unsupported. Use normal Python attributes insteadrB  rC  r   r   r   _unsupported_data_method  rF  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_notifyr6  r   	__class__r   r   rI  ,  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.
        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  r8  swaphandlerr   r   new_handlerW  s   
z(Object.connect_data.<locals>.new_handler)getr   ConnectFlagsAFTERr	   r
   connect_afterconnectSWAPPEDlenr&  )r   r'  rQ  datar9  flagsconnect_funcrR  r   rP  r   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.r   r   )r   r   stop_emission__doc__r   stop_emission_by_name)r   r'  r   r   r   r^  r  s   
zObject.stop_emission)Ar   r   r   rE  rG  get_data	get_qdataset_data
steal_datasteal_qdatareplace_datareplace_qdatabind_property_fullcompat_controlinterface_find_propertyinterface_install_propertyinterface_list_propertiesnotify_by_pspecwatch_closurer   r@  ref_refref_sink	_ref_sinkunref_unrefforce_floating_force_floatingr	   r
   get_propertyget_propertiesset_propertyset_propertiesbind_propertyrW  rV  connect_objectconnect_object_afterdisconnect_by_funchandler_block_by_funchandler_unblock_by_funcemitchainweak_ref__copy____deepcopy__rI  r]  r$  handler_blockr?  r  handler_unblocksignal_handler_disconnect
disconnecthandler_disconnectsignal_handler_is_connectedhandler_is_connectedsignal_stop_emission_by_namer`  r^  emit_stop_by_name__classcell__r   r   rJ  r   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.r   r   )r   r   r   r   r   r   r   __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)r   9      _unboundz$binding has already been cleared outT)
r   MAJOR_VERSIONMINOR_VERSIONMICRO_VERSIONrH  r  unbindr   r&  setattrr   rJ  r   r   r    s   
zBinding.unbind)r   r   r   r  r  r  r   r   rJ  r   r    s    r  r   zGObject.Property)PropertySignalSignalOverrider   r   )kr=  r   collectionsr   	gi.modulegigi.overridesr   r   gi.repositoryr   r   r   propertyhelperr   signalhelperr	   moduleget_introspection_moduler   __all__r   optionr   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   r   r   r   
ParamFlagsREADABLEWRITABLEr   SignalFlagsr   r}   r~   rs   r
   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  objectr  r$  r%  r,  r2  r3  r4  r5  r6  r?  r@  r  r  r  r  r   r   r   r   r   <module>   s,  





























^








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