U
    	^Q                     @   s   d Z ddlZddlZddlZddlm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GObject)_compatc                 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   sZ  |d kr| }|j ddd  }t| D ](}zt| |d }W n   Y q*Y nX zdt|tjr|j	 D ]H\}}|j
}||d d}|r||r|t|d  }t||| qjW n tk
r   Y q*Y nX zht|tjr6|j	 D ]J\}}	z|	jd |d d}W n tk
r&   Y qY nX t|||	 qW q* tk
rR   Y q*Y q*X q*d S )N.   _r   )__name__rsplitupperdirr   
issubclassr   ZGEnumZ__enum_values__itemsZ
value_namereplace
startswithlenr   	TypeErrorZGFlagsZ__flags_values__Zvalue_names
IndexError)
moduledeststripmodnameattrr   valueenumr   flagr   r   r   _install_enums=   s8    


r/   c                 C   s<   | t kr,t |  }||kr(td| |f dS |t | < dS dS )z*Returns True in case it is already enabledz.%r already enabled with different version (%r)TFN)_enabled_registry
ValueError)r   versionZenabled_versionr   r   r   _check_enabled^   s     r3   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   )GLibZglibr   Zgobject)_propertyhelperzgobject.propertyhelper)GioZgio)r3   gi.repositoryr4   r   r   gir5   r6   )r4   r   r5   r6   r   r   r   enablem   s    


r9   c                  C   s   t   ttD ]D\} }}|tkr.t| | qt| | t| |t|k	rt| || qtdd= ttD ]$\}}|tkrt	j
|= qh|t	j
|< qhtdd= tt	 tjrt	d dS )zfReverse all effects of the enable_xxx() calls except for
    require_version() calls and imports.
    Nascii)r0   clearreversedr	   r   delattrr   r   r   r   r   r   reloadPY2setdefaultencoding)r   r   r   r   r   r   _disable_all   s     




rA   3.0c           #         s  t d| rd S | dkrtdtt tjr8t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/d0}tj!d1| td2|  dd3l	m& td td4 td5d6 td7j'j(j)f t d8d9 }tj*d:t+| j,G fd;d<d<}	td<|	 j-j.dfd>d?	}
tj-d@|
 j-j/dfdAdB	}tj-dC| j0j.dfdDdE	}tj0d@| j0j/dfdFdG	}tj0dC| j1j.dfdHdI	}tj1d@| j1j/dfdJdK	}tj1dC| j1j2t3ffdLdM	}tj1dN| G dOdP dPj4}tdP| j5j6	t3f	fdQdR	}tj5dS| G fdTdUdUj5}tdU| fdVdW}tdX| fdYdZ}td[| d\d] }tj7d^t+| fd_d`}tda| dbdc }tj5dd| tdej8j9 tdfj:j tdgj;j< tdhj;j= tdij;j> tdjj;j? tdkj;j tdlj@j tdmj!jA tdnjBjC tjDdojDjE tdpjFjG tjFdqjFjH jIjJG fdrdsds}tds| G fdtdudu}tdu| tdvdwdx  tjKdytLjKjMdz td{jKjN jKjOfd|d}}tjKd~| tjKdjKjP G fdddtQ G  fdddtQG fdddtQ}tjKd|  jRjSdfdd	}tjRd| j!jTdfdd	}tj!d| tdj!jU tdj!jV G dd dtQ}| } td|  tWX   tWjYdtZd ddl[m\}! W 5 Q R X td|! td|! ddl]m^}" td|"j_ d S )NZgtkz4.0zversion 4.0 not supportedzutf-8Atk1.0r   )rC   ZatkPango)rE   Zpango
PangoCairo)rF   Z
pangocairoGdk	GdkPixbuf2.0rG   )rH   zgtk.gdkr(   Z_2BUTTON_PRESS   ZBUTTON_PRESS   Zscreen_get_defaultPixbufPixbufLoaderZpixbuf_new_from_dataZpixbuf_new_from_fileZpixbuf_new_from_file_at_scaleZpixbuf_new_from_file_at_sizeZpixbuf_new_from_inlineZpixbuf_new_from_streamZpixbuf_new_from_stream_at_scaleZpixbuf_new_from_xpm_dataZpixbuf_get_file_infoc                     s.     } g }dd }| D ]}| || q|S )Nc                 S   s8   i }|   |d< |  |d< |  |d< |  |d< |S )NZdescriptionr   Z
mime_types
extensions)Zget_descriptionZget_nameZget_mime_typesZget_extensions)format_resultr   r   r   	make_dict   s    z2enable_gtk.<locals>.get_formats.<locals>.make_dict)r
   )ZformatsrR   rS   rQ   )orig_get_formatsr   r   get_formats   s    zenable_gtk.<locals>.get_formatsZpixbuf_get_formatsc                    s    | dd  S )Nr   r   self)orig_get_originr   r   
get_origin   s    zenable_gtk.<locals>.get_originrY   Zscreen_widthZscreen_heightc                    s    | |    f S r   )Z
get_visualZ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^   ZgdkZpygtk_version)   c   r   Zgtk_versionc                 S   s   t jdtjdd d S )Nz%set_tool_item_type() is not supportedr`   
stacklevelwarningswarnr8   ZPyGIDeprecationWarning)Z
menuactionZgtyper   r   r   set_tool_item_type  s     z&enable_gtk.<locals>.set_tool_item_typerg   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__Zpropsxalignyalignxscaleyscale)rW   rj   rk   rl   rm   orig_Alignmentr   r   ri     s
    
z&enable_gtk.<locals>.Alignment.__init__N)rh   rh   rh   rh   r   
__module____qualname__ri   r   rn   r   r   	Alignment  s   rs   Tc                    s    | |||| d S r   r   rW   ZchildexpandZfillZpadding)orig_pack_endr   r   pack_end  s    zenable_gtk.<locals>.pack_endrw   c                    s    | |||| d S r   r   rt   )orig_pack_startr   r   
pack_start!  s    zenable_gtk.<locals>.pack_startry   c                    s    | || d S r   r   rW   cellru   )orig_tree_view_column_pack_endr   r   tree_view_column_pack_end)  s    z-enable_gtk.<locals>.tree_view_column_pack_endc                    s    | || d S r   r   rz   ) orig_tree_view_column_pack_startr   r   tree_view_column_pack_start/  s    z/enable_gtk.<locals>.tree_view_column_pack_startc                    s    | || d S r   r   rz   )orig_cell_pack_endr   r   cell_pack_end7  s    z!enable_gtk.<locals>.cell_pack_endc                    s    | || d S r   r   rz   )orig_cell_pack_startr   r   cell_pack_start=  s    z#enable_gtk.<locals>.cell_pack_startc                    s    fdd}| ||| d S )Nc                     s    | d t kr| d d }  |  S Nr   r   argsfuncr   r   callbackD  s    z8enable_gtk.<locals>.set_cell_data_func.<locals>.callbackr   )rW   r{   r   	user_datar   )orig_set_cell_data_funcr   r   set_cell_data_funcC  s    z&enable_gtk.<locals>.set_cell_data_funcr   c                   @   s   e Zd ZdS )z'enable_gtk.<locals>.GenericCellRendererNr   rq   rr   r   r   r   r   GenericCellRendererM  s   r   c                    s    fdd}| || d S )Nc                     s    | d t kr| d d }  |  S r   r   r   r   r   r   r   V  s    z>enable_gtk.<locals>.combo_row_separator_func.<locals>.callbackr   )rW   r   r   r   )orig_combo_row_separator_funcr   r   combo_row_separator_funcU  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 )NZ	has_entryT)ComboBoxri   )rW   kwdsr_   r   r   ri   `  s    z*enable_gtk.<locals>.ComboBoxEntry.__init__c                 S   s   |  | d S r   )set_entry_text_column)rW   Ztext_columnr   r   r   set_text_columnc  s    z1enable_gtk.<locals>.ComboBoxEntry.set_text_columnc                 S   s   |   S r   )Zget_entry_text_columnrV   r   r   r   get_text_columnf  s    z1enable_gtk.<locals>.ComboBoxEntry.get_text_columnN)r   rq   rr   ri   r   r   r   r_   r   r   ComboBoxEntry_  s   r   c                      s      S r   r   r   r_   r   r   combo_box_entry_newj  s    z'enable_gtk.<locals>.combo_box_entry_newr   c                    s    j | dS )Nmodelr   r   r_   r   r   combo_box_entry_new_with_modeln  s    z2enable_gtk.<locals>.combo_box_entry_new_with_modelr   c                 S   s   t jdtjdd d S )Nz)install_child_property() is not supportedr`   rb   rd   )Z	containerr.   Zpspecr   r   r   install_child_propertyt  s     z*enable_gtk.<locals>.install_child_propertyr   c                     s*      }  t}| | | d | S )Nr   )r   Z	ListStorestrZ	set_modelr   )Zcombor   r_   r   r   new_texty  s
    


zenable_gtk.<locals>.new_textZcombo_box_new_textc                 S   s   |   }||g d S r   )Z	get_modelr
   )rW   textr   r   r   r   append_text  s    zenable_gtk.<locals>.append_textr   Zexpander_new_with_mnemonicZicon_theme_get_defaultZimage_new_from_pixbufZimage_new_from_stockZimage_new_from_animationZimage_new_from_icon_setZimage_new_from_fileZsettings_get_defaultZwindow_set_default_iconZclipboard_getZconnect_groupZstatus_icon_position_menuZset_tooltipc                       s   e Zd Zd fdd	ZdS )zenable_gtk.<locals>.HScaleNc                    s    j | |d d S N)
adjustmentri   rW   r   orig_HScaler   r   ri     s    z#enable_gtk.<locals>.HScale.__init__)Nrp   r   r   r   r   HScale  s   r   c                       s   e Zd Zd fdd	ZdS )zenable_gtk.<locals>.VScaleNc                    s    j | |d d S r   r   r   orig_VScaler   r   ri     s    z#enable_gtk.<locals>.VScale.__init__)Nrp   r   r   r   r   VScale  s   r   Z	stock_addc                 S   s   d S r   r   )r!   r   r   r   <lambda>      zenable_gtk.<locals>.<lambda>rZ   )fgetZwidget_get_default_directionc                    s   G dd dt j}| | 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| j g d S r   )heightwidthr   UserListri   )rW   Zreqr   r   r   ri     s    z>enable_gtk.<locals>.size_request.<locals>.SizeRequest.__init__Nrp   r   r   r   r   SizeRequest  s   r   )r   r   )widgetr   )orig_size_requestr   r   size_request  s    z enable_gtk.<locals>.size_requestr   Z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)rW   r   r   r   r   ri     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   Zget_background_colorColorintr   r   r   )rW   stateZcolorrJ   r   r   __getitem__  s
    z*enable_gtk.<locals>.BaseGetter.__getitem__N)r   rq   rr   ri   r   r   rJ   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   )Zget_style_contextbaser   Zblack)rW   r   r   r   rG   r   r   ri     s    
z#enable_gtk.<locals>.Styles.__init__Nrp   r   r   r   r   Styles  s   r   c                       s   e Zd Z fddZdS )z#enable_gtk.<locals>.StyleDescriptorc                    s    |S r   r   )rW   instanceZclass_r   r   r   __get__  s    z+enable_gtk.<locals>.StyleDescriptor.__get__N)r   rq   rr   r   r   r   r   r   StyleDescriptor  s   r   ZstyleF      ?c                    s    | |||||S r   r   )rW   ZmarkZwithin_marginZ	use_alignrj   rk   )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                    s6     } d}|dks"|dkrFt|d|_t|d|_| jjO }|dksV|dkrzt|d|_t|d|_| jjO }|dks|dkrt|d|_	t|d|_
| jjO }|dks|	dkrt|d|_t|	d|_| jjO }|
dks|dkr(|
dks|dkrtd|
|_||_| jjO }| |||S )Nr   rh   zaspect ratios must be positive)ZGeometryZWindowHintsmax	min_width
min_heightZMIN_SIZE	max_width
max_heightZMAX_SIZE
base_widthbase_heightZ	BASE_SIZE	width_inc
height_incZ
RESIZE_INCr%   
min_aspect
max_aspectZASPECT)rW   Zgeometry_widgetr   r   r   r   r   r   r   r   r   r   ZgeometryZ	geom_mask)rG   orig_set_geometry_hintsr   r   set_geometry_hints  s2    
z&enable_gtk.<locals>.set_geometry_hintsr   Zwindow_list_toplevelsZwindow_set_default_icon_namec                   @   s   e Zd ZdS )zenable_gtk.<locals>.UnixPrintNr   r   r   r   r   	UnixPrint  s   r   Zgtkunixprintignore)category)keysymszgtk.keysymsr   r   )generictreemodelGenericTreeModel)TTr   )TTr   )T)T)T)T)Fr   r   )Nr   r   r   r   r   r   r   r   r   r   )`r3   r1   r   r>   r   r?   r@   r8   require_versionr7   rC   r   r/   rE   rF   rG   rH   r   ZScreenget_defaultrN   rO   Znew_with_typeZnew_from_dataZnew_from_fileZnew_from_file_at_scaleZnew_from_file_at_sizeZnew_from_inlineZnew_from_streamZnew_from_stream_at_scaleZnew_from_xpm_dataZget_file_inforU   ZWindowrY   r   r   r]   r^   ZMAJOR_VERSIONZMINOR_VERSIONZMICRO_VERSIONZActionclassmethodrs   ZBoxrw   ry   ZTreeViewColumnZ
CellLayoutr   r   ZCellRendererr   r   	ContainerZExpanderZnew_with_mnemonicZ	IconThemeImageZnew_from_pixbufZnew_from_stockZnew_from_animationZnew_from_icon_setZSettingsZset_default_iconZ	Clipboardr   Z
AccelGroupZconnectZ
StatusIconZposition_menuZset_tooltip_textr   r   ZWidgetpropertyZ
get_windowZget_default_directionr   ZhideobjectZTextViewr   r   Zlist_toplevelsZset_default_icon_namere   catch_warningssimplefilterRuntimeWarningZgi.overridesr   r   r   r   )#r2   rC   rE   rF   rH   rU   rY   r\   rg   rs   rw   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Z	unixprintr   r   r   )r   rG   r^   r   ro   r   r   r   r   r   r[   rT   rX   rv   rx   r   r   r   r   r|   r~   r   
enable_gtk   sJ   








	
                       &


r   c                  C   s2   t drd S tdd ddlm}  td|  d S )NZvteVtez0.0r   r   )r3   r8   r   r7   r   r   r   r   r   r   
enable_vte  s
    r   c                  C   s>   t drd S tdd ddlm}  td|  t| dd d S )NZpopplerPopplerz0.18r   r   Zpypoppler_version)r   r   r   )r3   r8   r   r7   r   r   r   r   r   r   r   enable_poppler#  s    
r   rD   c                 C   sF   t d| rd S td|  ddlm} td| t|jd|jj d S )NZwebkitWebKitr   )r   Zget_web_inspector)	r3   r8   r   r7   r   r   r   ZWebViewZget_inspector)r2   r   r   r   r   enable_webkit.  s    

r   c                  C   s2   t drd S tdd ddlm}  td|  d S )NZgudevGUdevrD   r   r   )r3   r8   r   r7   r   r   r   r   r   r   enable_gudev9  s
    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 )NZgstGstz0.10r   )r   Zregistry_get_defaultZelement_registerZelement_factory_makeZcaps_new_anyZget_pygst_versionc                   S   s   dS )N)r   
      r   r   r   r   r   r   O  r   zenable_gst.<locals>.<lambda>Zget_gst_versionc                   S   s   dS )N)r   r   (   r   r   r   r   r   r   P  r   )GstInterfaceszgst.interfaces)GstAudioz	gst.audio)GstVideoz	gst.video)GstBasezgst.baseBaseTransformBaseSink)GstControllerzgst.controllerrK   )
GstPbutilszgst.pbutils)r3   r8   r   r7   r   r   r/   r   ZRegistryr   ZElementregisterZElementFactoryZmakeZCapsZnew_anyr   r   r   r   r   r   r   r  )r   r   r   r   r   r   r  r   r   r   
enable_gstB  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 )NZ	goocanvas	GooCanvasrI   r   r  ZGOO_CANVAS_)r)   Z
ItemSimpleZItemr   ZGroupZRect)r3   r8   r   r7   r  r   r/   r   ZCanvasItemSimpleZ
CanvasItemZCanvasImageZCanvasGroupZ
CanvasRectr  r   r   r   enable_goocanvasn  s    
r  )Nr   )N)rB   )rD   )__doc__r   re   r8   r7   r   r   r	   r   r   r   r0   r   r   r/   r3   r9   rA   r   r   r   r   r   r  r  r   r   r   r   <module>   s2   
!

    	
	,