o
    b^P                     @   s   d Z ddlZddlZddlmZ ddlZddlmZ g Zg Z	e
 Zi Zdd Zdd Zd"d
dZd#ddZdd Zdd Zd$ddZdd Zdd Zd%ddZdd Zdd Zd d! ZdS )&a  
PyGTK compatibility layer.

This modules goes a little bit longer to maintain PyGTK compatibility than
the normal overrides system.

It is recommended to not depend on this layer, but only use it as an
intermediate step when porting your application to PyGI.

Compatibility might never be 100%, but the aim is to make it possible to run
a well behaved PyGTK application mostly unmodified on top of PyGI.

    NUserListGObjectc                 C   s,   t | |t}t| || t| ||f d S N)getattr_unsetsetattr_patchesappend)objname	new_value	old_value r   9/usr/lib/python3/dist-packages/pygtkcompat/pygtkcompat.py_patch1   s   r   c                 C   s*   t j| t}|t j| < t| |f d S r   )sysmodulesgetr   _module_patchesr   )r   r   r   r   r   r   _patch_module7   s   
r    c           
   
   C   s8  |d u r| }|j ddd  }t| D ]}zt| |d }W n   Y qz2t|tjrV|j	 D ]$\}}|j
}||d d}|rO||rO|t|d  }t||| q1W n	 ty`   Y qw z/t|tjr|j	 D ]!\}}	z|	jd |d d}W n	 ty   Y qmw t|||	 qmW q ty   Y qw d S )N.   _r   )__name__rsplitupperdirr   
issubclassr   GEnum__enum_values__items
value_namereplace
startswithlenr   	TypeErrorGFlags__flags_values__value_names
IndexError)
moduledeststripmodnameattrr   valueenumr   flagr   r   r   _install_enums=   sD   r6   c                 C   s8   | t v rt |  }||krtd| |f dS |t | < dS )z*Returns True in case it is already enabledz.%r already enabled with different version (%r)TF)_enabled_registry
ValueError)r   versionenabled_versionr   r   r   _check_enabled^   s   r;   c                  C   sh   t drd S ddlm}  td|  ddlm} td| ddlm} td| dd	lm} td
| d S )Nr   r   )GLibglibr   gobject)_propertyhelperzgobject.propertyhelper)Giogio)r;   gi.repositoryr<   r   r   gir?   r@   )r<   r   r?   r@   r   r   r   enablem   s   


rD   c                  C   s   t   ttD ]"\} }}|tu rt| | qt| | t| |t|ur*t| || qtdd= ttD ]\}}|tu rAt	j
|= q4|t	j
|< q4tdd= dS )zfReverse all effects of the enable_xxx() calls except for
    require_version() calls and imports.
    N)r7   clearreversedr
   r   delattrr   r	   r   r   r   )r   r   r   r   r   r   _disable_all   s   


rH   3.0c           #         s  t d| rd S | dkrtdtdd ddlm} td| t| td	d dd
lm} td| t| tdd ddlm	} td| td|  tdd ddlm
 ddlm} td t t|d tdd tdd tdjj td|j td|jj td|jj td|jj td|jj td |jj td!|jj td"|jj td#|jj td$|jj td%|jj |jjfd&d'}td(| jjfd)d*}tjd+| td,jj td-jj jj 

fd.d/}tjd0| td1|  dd2lm! td td3 td4d5 td6j"j#j$f t d7d8 }tj%d9t&| j'G fd:d;d;}	td;|	 j(j)dfd=d>	}
tj(d?|
 j(j*dfd@dA	}tj(dB| j+j)dfdCdD	}tj+d?| j+j*dfdEdF	}tj+dB| j,j)dfdGdH	}tj,d?| j,j*dfdIdJ	}tj,dB| j,j-t.ffdKdL	}tj,dM| G dNdO dOj/}tdO| j0j1	t.f	fdPdQ	}tj0dR| G fdSdTdTj0}tdT| fdUdV}tdW| fdXdY}tdZ| d[d\ }tj2d]t&| fd^d_}td`| dadb }tj0dc| tddj3j4 tdej5j tdfj6j7 tdgj6j8 tdhj6j9 tdij6j: tdjj6j tdkj;j tdljj< tdmj=j> tj?dnj?j@ tdojAjB tjAdpjAjC jDjEG fdqdrdr}tdr| G fdsdtdt}tdt| tdudvdw  tjFdxtGjFjHdy tdzjFjI jFjJfd{d|}tjFd}| tjFd~jFjK G fdddtL G  fdddtLG fdddtL}tjFd|  jMjN	dfdd	}tjMd| jjO	 			dfdd	}tjd| tdjjP tdjjQ G dd dtL}| } td|  tRS  tRjTdtUd ddlVmW}! W d    n	1 sw   Y  td|! td|! ddlXmY}" td|"jZ d S )Ngtkz4.0zversion 4.0 not supportedAtk1.0r   )rK   atkPango)rN   pango
PangoCairo)rP   
pangocairoGdk	GdkPixbuf2.0rR   )rS   zgtk.gdkr/   _2BUTTON_PRESS   BUTTON_PRESS   screen_get_defaultPixbufPixbufLoaderpixbuf_new_from_datapixbuf_new_from_filepixbuf_new_from_file_at_scalepixbuf_new_from_file_at_sizepixbuf_new_from_inlinepixbuf_new_from_streampixbuf_new_from_stream_at_scalepixbuf_new_from_xpm_datapixbuf_get_file_infoc                     s.     } g }dd }| D ]	}| || q|S )Nc                 S   s8   i }|   |d< |  |d< |  |d< |  |d< |S )Ndescriptionr   
mime_types
extensions)get_descriptionget_nameget_mime_typesget_extensions)format_resultr   r   r   	make_dict   s   z2enable_gtk.<locals>.get_formats.<locals>.make_dict)r   )formatsro   rp   rn   )orig_get_formatsr   r   get_formats   s   zenable_gtk.<locals>.get_formatspixbuf_get_formatsc                    s    | dd  S )Nr   r   self)orig_get_originr   r   
get_origin      zenable_gtk.<locals>.get_originrx   screen_widthscreen_heightc                    s    | |    f S r   )
get_visualget_best_depth)window)orig_gdk_window_get_geometryr   r   gdk_window_get_geometry   s   z+enable_gtk.<locals>.gdk_window_get_geometryget_geometryGtkr   gdkpygtk_version)   c   r   gtk_versionc                 S      t jdtjdd d S )Nz%set_tool_item_type() is not supportedr   
stacklevelwarningswarnrC   PyGIDeprecationWarning)
menuactiongtyper   r   r   set_tool_item_type      
z&enable_gtk.<locals>.set_tool_item_typer   c                       s   e Zd Zd fdd	ZdS )zenable_gtk.<locals>.Alignment        c                    s.     |  || j_|| j_|| j_|| j_d S r   )__init__propsxalignyalignxscaleyscale)rv   r   r   r   r   orig_Alignmentr   r   r     s
   
z&enable_gtk.<locals>.Alignment.__init__N)r   r   r   r   r   
__module____qualname__r   r   r   r   r   	Alignment      r   Tc                        | |||| d S r   r   rv   childexpandfillpadding)orig_pack_endr   r   pack_end     zenable_gtk.<locals>.pack_endr   c                    r   r   r   r   )orig_pack_startr   r   
pack_start  r   zenable_gtk.<locals>.pack_startr   c                        | || d S r   r   rv   cellr   )orig_tree_view_column_pack_endr   r   tree_view_column_pack_end   ry   z-enable_gtk.<locals>.tree_view_column_pack_endc                    r   r   r   r   ) orig_tree_view_column_pack_startr   r   tree_view_column_pack_start&  ry   z/enable_gtk.<locals>.tree_view_column_pack_startc                    r   r   r   r   )orig_cell_pack_endr   r   cell_pack_end.  ry   z!enable_gtk.<locals>.cell_pack_endc                    r   r   r   r   )orig_cell_pack_startr   r   cell_pack_start4  ry   z#enable_gtk.<locals>.cell_pack_startc                    s    fdd}| ||| d S )Nc                         | d t kr| d d }  |  S Nr   r   argsfuncr   r   callback;     z8enable_gtk.<locals>.set_cell_data_func.<locals>.callbackr   )rv   r   r   	user_datar   )orig_set_cell_data_funcr   r   set_cell_data_func:  s   z&enable_gtk.<locals>.set_cell_data_funcr   c                   @      e Zd ZdS )z'enable_gtk.<locals>.GenericCellRendererNr   r   r   r   r   r   r   GenericCellRendererD      r   c                    s    fdd}| || d S )Nc                     r   r   r   r   r   r   r   r   M  r   z>enable_gtk.<locals>.combo_row_separator_func.<locals>.callbackr   )rv   r   r   r   )orig_combo_row_separator_funcr   r   combo_row_separator_funcL  s   z,enable_gtk.<locals>.combo_row_separator_funcset_row_separator_funcc                       s(   e Zd Z fddZdd Zdd ZdS )z!enable_gtk.<locals>.ComboBoxEntryc                    s    j j| fddi| d S )N	has_entryT)ComboBoxr   )rv   kwdsr   r   r   r   W  s   z*enable_gtk.<locals>.ComboBoxEntry.__init__c                 S   s   |  | d S r   )set_entry_text_column)rv   text_columnr   r   r   set_text_columnZ  s   z1enable_gtk.<locals>.ComboBoxEntry.set_text_columnc                 S   s   |   S r   )get_entry_text_columnru   r   r   r   get_text_column]     z1enable_gtk.<locals>.ComboBoxEntry.get_text_columnN)r   r   r   r   r   r   r   r   r   r   ComboBoxEntryV  s    r   c                      s      S r   r   r   r   r   r   combo_box_entry_newa  r   z'enable_gtk.<locals>.combo_box_entry_newr   c                    s    j | dS )Nmodelr   r   r   r   r   combo_box_entry_new_with_modele  s   z2enable_gtk.<locals>.combo_box_entry_new_with_modelr   c                 S   r   )Nz)install_child_property() is not supportedr   r   r   )	containerr5   pspecr   r   r   install_child_propertyk  r   z*enable_gtk.<locals>.install_child_propertyr   c                     s*      }  t}| | | d | S )Nr   )r   	ListStorestr	set_modelr   )combor   r   r   r   new_textp  s
   


zenable_gtk.<locals>.new_textcombo_box_new_textc                 S   s   |   }||g d S r   )	get_modelr   )rv   textr   r   r   r   append_textx  s   zenable_gtk.<locals>.append_textr   expander_new_with_mnemonicicon_theme_get_defaultimage_new_from_pixbufimage_new_from_stockimage_new_from_animationimage_new_from_icon_setimage_new_from_filesettings_get_defaultwindow_set_default_iconclipboard_getconnect_groupstatus_icon_position_menuset_tooltipc                          e Zd Zd fdd	ZdS )zenable_gtk.<locals>.HScaleNc                        j | |d d S N)
adjustmentr   rv   r   orig_HScaler   r   r        z#enable_gtk.<locals>.HScale.__init__r   r   r   r   r   r   HScale  r   r   c                       r   )zenable_gtk.<locals>.VScaleNc                    r   r   r   r   orig_VScaler   r   r     r   z#enable_gtk.<locals>.VScale.__init__r   r   r   r   r   r   VScale  r   r   	stock_addc                 S   s   d S r   r   )r$   r   r   r   <lambda>      zenable_gtk.<locals>.<lambda>r~   )fgetwidget_get_default_directionc                    s   G dd dt }| | S )Nc                   @   s   e Zd Zdd ZdS )z5enable_gtk.<locals>.size_request.<locals>.SizeRequestc                 S   s(   |j | _ |j| _t| | j| j g d S r   )heightwidthr   r   )rv   reqr   r   r   r     s   z>enable_gtk.<locals>.size_request.<locals>.SizeRequest.__init__Nr   r   r   r   r   SizeRequest  s    r  r   )widgetr  )orig_size_requestr   r   size_request  s   z enable_gtk.<locals>.size_requestr  hide_allc                       s    e Zd Zdd Z fddZdS )zenable_gtk.<locals>.BaseGetterc                 S   s
   || _ d S r   )context)rv   r  r   r   r   r     s   
z'enable_gtk.<locals>.BaseGetter.__init__c                    s:   | j |} jt|jd t|jd t|jd dS )Ni  redgreenblue)r  get_background_colorColorintr  r  r  )rv   statecolorrU   r   r   __getitem__  s
   z*enable_gtk.<locals>.BaseGetter.__getitem__N)r   r   r   r   r  r   rU   r   r   
BaseGetter  s    r  c                       s   e Zd Z fddZdS )zenable_gtk.<locals>.Stylesc                    s(   |  } || _jdddd| _d S )Nr   r  )get_style_contextbaser  black)rv   r	  r  r  rR   r   r   r     s   
z#enable_gtk.<locals>.Styles.__init__Nr   r   r  r   r   Styles  r   r  c                       s   e Zd Z fddZdS )z#enable_gtk.<locals>.StyleDescriptorc                    s    |S r   r   )rv   instanceclass_r  r   r   __get__  r   z+enable_gtk.<locals>.StyleDescriptor.__get__N)r   r   r   r!  r   r   r   r   StyleDescriptor  s    r"  styleF      ?c                    s    | |||||S r   r   )rv   markwithin_margin	use_alignr   r   )orig_text_view_scroll_to_markr   r   text_view_scroll_to_mark  s   z,enable_gtk.<locals>.text_view_scroll_to_markscroll_to_markr         c                    s0     } d}|dks|dkr#t|d|_t|d|_| jjO }|dks+|dkr=t|d|_t|d|_| jjO }|dksE|dkrWt|d|_	t|d|_
| jjO }|dks_|	dkrqt|d|_t|	d|_| jjO }|
dksy|dkr|
dks|dkrtd|
|_||_| jjO }| |||S )Nr   r   zaspect ratios must be positive)GeometryWindowHintsmax	min_width
min_heightMIN_SIZE	max_width
max_heightMAX_SIZE
base_widthbase_height	BASE_SIZE	width_inc
height_inc
RESIZE_INCr)   
min_aspect
max_aspectASPECT)rv   geometry_widgetr/  r0  r2  r3  r5  r6  r8  r9  r;  r<  geometry	geom_mask)rR   orig_set_geometry_hintsr   r   set_geometry_hints  s2   
z&enable_gtk.<locals>.set_geometry_hintsrB  window_list_toplevelswindow_set_default_icon_namec                   @   r   )zenable_gtk.<locals>.UnixPrintNr   r   r   r   r   	UnixPrint  r   rE  gtkunixprintignore)category)keysymszgtk.keysymsrI  r   )generictreemodelGenericTreeModel)TTr   )T)Fr$  r$  )Nr   r   r   r   r   r   r   r   r+  r+  )[r;   r8   rC   require_versionrB   rK   r   r6   rN   rP   rR   rS   r   Screenget_defaultr\   r]   new_with_typenew_from_datanew_from_filenew_from_file_at_scalenew_from_file_at_sizenew_from_inlinenew_from_streamnew_from_stream_at_scalenew_from_xpm_dataget_file_infors   Windowrx   r  r  r   r   MAJOR_VERSIONMINOR_VERSIONMICRO_VERSIONActionclassmethodr   Boxr   r   TreeViewColumn
CellLayoutr   r   CellRendererr   r   	ContainerExpandernew_with_mnemonic	IconThemeImagenew_from_pixbufnew_from_stocknew_from_animationnew_from_icon_setSettingsset_default_icon	Clipboardr   
AccelGroupconnect
StatusIconposition_menuset_tooltip_textr   r   Widgetproperty
get_windowget_default_directionr  hideobjectTextViewr*  rB  list_toplevelsset_default_icon_namer   catch_warningssimplefilterRuntimeWarninggi.overridesrI  r   rJ  rK  )#r9   rK   rN   rP   rS   rs   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r"  r)  rB  rE  	unixprintrI  rJ  r   )r  rR   r   r  r   r   r   r   r   r   r   rr   rw   r   r   r   rA  r
  r(  r   r   r   
enable_gtk   s4  






	
&


r  c                  C   2   t drd S tdd ddlm}  td|  d S )NvteVtez0.0r   r  )r;   rC   rL  rB   r  r   r  r   r   r   
enable_vte  
   r  c                  C   s>   t drd S tdd ddlm}  td|  t| dd d S )NpopplerPopplerz0.18r   r  pypoppler_version)r   r   r   )r;   rC   rL  rB   r  r   r   r  r   r   r   enable_poppler  s   
r  rL   c                 C   sF   t d| rd S td|  ddlm} td| t|jd|jj d S )NwebkitWebKitr   )r  get_web_inspector)	r;   rC   rL  rB   r  r   r   WebViewget_inspector)r9   r  r   r   r   enable_webkit%  s   

r  c                  C   r  )NgudevGUdevrL   r   r  )r;   rC   rL  rB   r  r   r  r   r   r   enable_gudev0  r  r  c                  C   sn  t drd S tdd ddlm}  td|  t|  t| d| jj	 t| d| j
j t| d| jj t| d	| jj t| d
dd  t| ddd  ddlm} td| t| ddlm} td| t| ddlm} td| t| ddlm} td| t| t| d|j t| d|j ddlm} td| t|| d ddlm} td| t| d S )NgstGstz0.10r   )r  registry_get_defaultelement_registerelement_factory_makecaps_new_anyget_pygst_versionc                   S      dS )N)r   
      r   r   r   r   r   r  F  r  zenable_gst.<locals>.<lambda>get_gst_versionc                   S   r  )N)r   r  (   r   r   r   r   r   r  G  r  )GstInterfaceszgst.interfaces)GstAudioz	gst.audio)GstVideoz	gst.video)GstBasezgst.baseBaseTransformBaseSink)GstControllerzgst.controllerrV   )
GstPbutilszgst.pbutils)r;   rC   rL  rB   r  r   r6   r   RegistryrN  ElementregisterElementFactorymakeCapsnew_anyr  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r   r   r   
enable_gst9  s@   






r  c                  C   s   t drd S tdd ddlm}  td|  t| dd t| d| j t| d	| j	 t| d
| j
 t| d| j t| d| j d S )N	goocanvas	GooCanvasrT   r   r  GOO_CANVAS_)r0   
ItemSimpleItemrg  GroupRect)r;   rC   rL  rB   r  r   r6   r   CanvasItemSimple
CanvasItemCanvasImageCanvasGroup
CanvasRectr  r   r   r   enable_goocanvase  s   
r  )Nr   r   )rI   )rL   )__doc__r   r   collectionsr   rC   rB   r   r
   r   ry  r   r7   r   r   r6   r;   rD   rH   r  r  r  r  r  r  r  r   r   r   r   <module>   s2   

!
  z	
	,