3
KP\L                 @   s   d Z ddlZddlZy>ddlmZ e ej  ejd ddlmZ W dQ R X W n$ e	k
rv   ddlmZ e Y nX ddl
Z
ddlmZ ddd	Zi Zdd
dZdd Ze 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ignore)reload)GObject c       
   "   C   s`  |d kr| }|j jddd j }x6t| D ](}yt| |d }W n   w.Y nX yht|tjrxV|jj	 D ]H\}}|j
}|j|d d}|r|j|r|t|d  }t||| qnW W n tk
r   w.Y nX yjt|tjr<xV|jj	 D ]H\}}	y|	jd j|d d}W n tk
r*   wY nX t|||	 qW W q. tk
rV   w.Y q.X q.W d S )N.   _r   )__name__rsplitupperdirgetattr
issubclassr   ZGEnumZ__enum_values__itemsZ
value_namereplace
startswithlensetattr	TypeErrorZGFlagsZ__flags_values__Zvalue_names
IndexError)
moduledeststripmodnameattrobjvalueenumnameflag r"   9/usr/lib/python3/dist-packages/pygtkcompat/pygtkcompat.py_install_enums6   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_enabledZ   s    r(   c              C   sh   t drd S ddlm}  | tjd< ddlm} |tjd< ddlm} |tjd< dd	lm} |tjd
< d S )Nr   r   )GLibZglib)r   Zgobject)_propertyhelperzgobject.propertyhelper)GioZgio)	r(   gi.repositoryr)   sysmodulesr   gir*   r+   )r)   r   r*   r+   r"   r"   r#   enablei   s    


r0   3.0c       $         s^  t d| rd S | dkrtdtt tjdhk r:tjd tjdd dd	lm	} |tj
d
< t| tjdd ddlm} |tj
d< t| tjdd ddlm} |tj
d< tjd|  tjdd ddlm ddlm} tj
d< t t|d d_d_jj_|j_|jj_|jj_|jj_y|jj_W n tk
r^   Y nX |jj_ |jj!_"|jj#_$|jj%_&|jj'_(|jj)_*|jj+fdd}|_,j-j.fdd}|j-_.j-j/fdd}|j-_/jj0_1jj2_3j-j4

fd d!}|j-_4tjd"|  dd#lm5 tj
d< _6di_7j8j9j:f_;t d&d' }	t<|	j=_>j?G fd(d)d)}
|
_?j@jAdjfd+d,	}|j@_Aj@jBdkfd-d.	}|j@_BjCjAdlfd/d0	}|jC_AjCjBdmfd1d2	}|jC_BjDjAdnfd3d4	}|jD_AjDjBdofd5d6	}|jD_BjDjEtFffd7d8	}|jD_EG d9d: d:jG}|_HjIjJ	tFf	fd;d<	}|jI_JG fd=d>d>jI}|_Kfd?d@}|_LfdAdB}|_MdCdD }t<|jN_OfdEdF}|_PdGdH }|jI_QjRjS_TjUj_VjWjX_YjWjZ_[jWj\_]jWj^__jWj_`jaj_bj-jc_dyjejf_gW n tk
r   Y nX jhjijh_jjkjl_mjkjnjk_ojpjqG fdIdJdJ}|_pG fdKdLdL}|_qdMdN _rtsjtjudOjt_vjtjw_xjtjyfdPdQ}|jt_yjtjzjt_{G fdRdSdSt| G  fdTdUdUt|G fdVdWdWt|}| jt_}j~jdpfdZd[	}|j~_j-jd{fd^d_	}|j-_j-j_j-j_G d`da dat|} |  }!|!tj
db< tj   tjdctdd ddelm}" W d Q R X |"tj
df< |"_d\dglm}# |#j_d S )|NZgtkz4.0zversion 4.0 not supported   r   zutf-8Atkz1.0)r3   ZatkPango)r4   Zpango
PangoCairo)r5   Z
pangocairoGdk	GdkPixbufz2.0)r6   )r7   zgtk.gdk)r         c                 s2     } g }dd }x| D ]}|j || qW |S )Nc             S   s8   i }| j  |d< | j |d< | j |d< | j |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)append)Zformatsr<   r=   r;   )orig_get_formatsr"   r#   get_formats   s    
zenable_gtk.<locals>.get_formatsc                sb   y@y j dddd}W n tk
r2    j  }Y nX | | W n tk
r\   | }Y nX |S )Nr   )Z	Rectangler   )windowZrect)r6   orig_get_frame_extentsr"   r#   get_frame_extents   s    z%enable_gtk.<locals>.get_frame_extentsc                s    | dd  S )Nr   r"   )self)orig_get_originr"   r#   
get_origin   s    zenable_gtk.<locals>.get_originc                s    | | j  j f S )N)Z
get_visualZget_best_depth)rA   )orig_gdk_window_get_geometryr"   r#   gdk_window_get_geometry   s    z+enable_gtk.<locals>.gdk_window_get_geometryGtk)rI      c   c             S   s   t jdtjdd d S )Nz%set_tool_item_type() is not supportedrJ   )
stacklevel)warningswarnr/   PyGIDeprecationWarning)Z
menuactionZgtyper"   r"   r#   set_tool_item_type   s    z&enable_gtk.<locals>.set_tool_item_typec                   s   e Zd Zd fdd	ZdS )zenable_gtk.<locals>.Alignment        c                s.    j |  || j_|| j_|| j_|| j_d S )N)__init__Zpropsxalignyalignxscaleyscale)rD   rS   rT   rU   rV   )orig_Alignmentr"   r#   rR     s
    
z&enable_gtk.<locals>.Alignment.__init__N)rQ   rQ   rQ   rQ   )r   
__module____qualname__rR   r"   )rW   r"   r#   	Alignment   s   rZ   Tc                s    | |||| d S )Nr"   )rD   childexpandfillpadding)orig_pack_endr"   r#   pack_end  s    zenable_gtk.<locals>.pack_endc                s    | |||| d S )Nr"   )rD   r[   r\   r]   r^   )orig_pack_startr"   r#   
pack_start  s    zenable_gtk.<locals>.pack_startc                s    | || d S )Nr"   )rD   cellr\   )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 )Nr"   )rD   rc   r\   ) 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 )Nr"   )rD   rc   r\   )orig_cell_pack_endr"   r#   cell_pack_end*  s    z!enable_gtk.<locals>.cell_pack_endc                s    | || d S )Nr"   )rD   rc   r\   )orig_cell_pack_startr"   r#   cell_pack_start0  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
   r
   )_unset)args)funcr"   r#   callback7  s    z8enable_gtk.<locals>.set_cell_data_func.<locals>.callbackr"   )rD   rc   rn   	user_dataro   )orig_set_cell_data_func)rn   r#   set_cell_data_func6  s    z&enable_gtk.<locals>.set_cell_data_funcc               @   s   e Zd ZdS )z'enable_gtk.<locals>.GenericCellRendererN)r   rX   rY   r"   r"   r"   r#   GenericCellRenderer@  s   rs   c                s    fdd}| || d S )Nc                 s    | d t kr| d d }  |  S )Nr   r
   r
   )rl   )rm   )rn   r"   r#   ro   I  s    z>enable_gtk.<locals>.combo_row_separator_func.<locals>.callbackr"   )rD   rn   rp   ro   )orig_combo_row_separator_func)rn   r#   combo_row_separator_funcH  s    z,enable_gtk.<locals>.combo_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)ComboBoxrR   )rD   kwds)rI   r"   r#   rR   S  s    z*enable_gtk.<locals>.ComboBoxEntry.__init__c             S   s   | j | d S )N)set_entry_text_column)rD   Ztext_columnr"   r"   r#   set_text_columnV  s    z1enable_gtk.<locals>.ComboBoxEntry.set_text_columnc             S   s   | j  S )N)Zget_entry_text_column)rD   r"   r"   r#   get_text_columnY  s    z1enable_gtk.<locals>.ComboBoxEntry.get_text_columnN)r   rX   rY   rR   ry   rz   r"   )rI   r"   r#   ComboBoxEntryR  s   r{   c                  s    j  S )N)r{   r"   )rI   r"   r#   combo_box_entry_new]  s    z'enable_gtk.<locals>.combo_box_entry_newc                s    j | dS )N)model)r{   )r}   )rI   r"   r#   combo_box_entry_new_with_modela  s    z2enable_gtk.<locals>.combo_box_entry_new_with_modelc             S   s   t jdtjdd d S )Nz)install_child_property() is not supportedrJ   )rL   )rM   rN   r/   rO   )Z	containerr!   Zpspecr"   r"   r#   install_child_propertyg  s    z*enable_gtk.<locals>.install_child_propertyc                 s*    j  }  jt}| j| | jd | S )Nr   )rv   Z	ListStorestrZ	set_modelrx   )Zcombor}   )rI   r"   r#   new_textl  s
    


zenable_gtk.<locals>.new_textc             S   s   | j  }|j|g d S )N)Z	get_modelr>   )rD   textr}   r"   r"   r#   append_textt  s    zenable_gtk.<locals>.append_textc                   s   e Zd Zd fdd	ZdS )zenable_gtk.<locals>.HScaleNc                s    j | |d d S )N)
adjustment)rR   )rD   r   )orig_HScaler"   r#   rR     s    z#enable_gtk.<locals>.HScale.__init__)N)r   rX   rY   rR   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 )N)r   )rR   )rD   r   )orig_VScaler"   r#   rR     s    z#enable_gtk.<locals>.VScale.__init__)N)r   rX   rY   rR   r"   )r   r"   r#   VScale  s   r   c             S   s   d S )Nr"   )r   r"   r"   r#   <lambda>  s    zenable_gtk.<locals>.<lambda>)fgetc                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| j g d S )N)heightwidthr   rR   )rD   Zreqr"   r"   r#   rR     s    z>enable_gtk.<locals>.size_request.<locals>.SizeRequest.__init__N)r   rX   rY   rR   r"   r"   r"   r#   SizeRequest  s   r   )r   )widgetr   )orig_size_requestr"   r#   size_request  s    z enable_gtk.<locals>.size_requestc                   s    e Zd Zdd Z fddZdS )zenable_gtk.<locals>.BaseGetterc             S   s
   || _ d S )N)context)rD   r   r"   r"   r#   rR     s    z'enable_gtk.<locals>.BaseGetter.__init__c                s:   | j 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   )rD   stateZcolor)r6   r"   r#   __getitem__  s    z*enable_gtk.<locals>.BaseGetter.__getitem__N)r   rX   rY   rR   r   r"   )r6   r"   r#   
BaseGetter  s   r   c                   s   e Zd Z fddZdS )zenable_gtk.<locals>.Stylesc                s(   |j  } || _jdddd| _d S )Nr   )r   r   r   )Zget_style_contextbaser   Zblack)rD   r   r   )r   r6   r"   r#   rR     s    
z#enable_gtk.<locals>.Styles.__init__N)r   rX   rY   rR   r"   )r   r6   r"   r#   Styles  s   r   c                   s   e Zd Z fddZdS )z#enable_gtk.<locals>.StyleDescriptorc                s    |S )Nr"   )rD   instanceZclass_)r   r"   r#   __get__  s    z+enable_gtk.<locals>.StyleDescriptor.__get__N)r   rX   rY   r   r"   )r   r"   r#   StyleDescriptor  s   r   F      ?c                s    | |||||S )Nr"   )rD   ZmarkZwithin_marginZ	use_alignrS   rT   )orig_text_view_scroll_to_markr"   r#   text_view_scroll_to_mark  s    z,enable_gtk.<locals>.text_view_scroll_to_markr   g      ?c                s6   j  } j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   g        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)rD   Zgeometry_widgetr   r   r   r   r   r   r   r   r   r   ZgeometryZ	geom_mask)r6   orig_set_geometry_hintsr"   r#   set_geometry_hints  s2    
z&enable_gtk.<locals>.set_geometry_hintsc               @   s   e Zd ZdS )zenable_gtk.<locals>.UnixPrintN)r   rX   rY   r"   r"   r"   r#   	UnixPrint  s   r   Zgtkunixprintr   )category)keysymszgtk.keysyms)generictreemodel)r2   r   )rJ   rK   r   )TTr   )TTr   )T)T)T)T)Fr   r   r
   r
   r
   r
   r
   r
   r
   r
               )Nr
   r
   r
   r
   r
   r
   r
   r
   r   r   )r(   r&   r   r-   version_infoZsetdefaultencodingr/   require_versionr,   r3   r.   r$   r4   r5   r6   r7   Z_2BUTTON_PRESSZBUTTON_PRESSZScreenget_defaultZscreen_get_defaultZPixbufZPixbufLoaderZnew_with_typeZnew_from_dataZpixbuf_new_from_dataZnew_from_fileZpixbuf_new_from_fileZnew_from_file_at_scaleZpixbuf_new_from_file_at_scaleAttributeErrorZnew_from_file_at_sizeZpixbuf_new_from_file_at_sizeZnew_from_inlineZpixbuf_new_from_inlineZnew_from_streamZpixbuf_new_from_streamZnew_from_stream_at_scaleZpixbuf_new_from_stream_at_scaleZnew_from_xpm_dataZpixbuf_new_from_xpm_dataZget_file_infoZpixbuf_get_file_infor@   Zpixbuf_get_formatsZWindowrC   rF   r   Zscreen_widthr   Zscreen_heightZget_geometryrI   ZgdkZpygtk_versionZMAJOR_VERSIONZMINOR_VERSIONZMICRO_VERSIONZgtk_versionclassmethodZActionrP   rZ   ZBoxr`   rb   ZTreeViewColumnZ
CellLayoutrr   rl   ZCellRendererrs   rv   Zset_row_separator_funcr{   r|   r~   	Containerr   Zcombo_box_new_textr   ZExpanderZnew_with_mnemonicZexpander_new_with_mnemonicZ	IconThemeZicon_theme_get_defaultImageZnew_from_pixbufZimage_new_from_pixbufZnew_from_stockZimage_new_from_stockZnew_from_animationZimage_new_from_animationZnew_from_icon_setZimage_new_from_icon_setZimage_new_from_fileZSettingsZsettings_get_defaultZset_default_iconZwindow_set_default_iconZ	ClipboardgetZclipboard_getZ
AccelGroupZconnectZconnect_groupZ
StatusIconZposition_menuZstatus_icon_position_menuZset_tooltip_textZset_tooltipr   r   Z	stock_addpropertyZWidgetZ
get_windowrA   Zget_default_directionZwidget_get_default_directionr   ZhideZhide_allobjectZstyleZTextViewZscroll_to_markr   Zlist_toplevelsZwindow_list_toplevelsZset_default_icon_nameZwindow_set_default_icon_namerM   catch_warningssimplefilterRuntimeWarningZgi.overridesr   r   r   ZGenericTreeModel)$r'   r3   r4   r5   r7   r@   rC   rF   rH   rP   rZ   r`   rb   re   rg   ri   rk   rr   rs   ru   r{   r|   r~   r   r   r   r   r   r   r   r   r   r   Z	unixprintr   r   r"   )r   r6   rI   r   rW   r   r   rh   rj   rt   rG   r?   rB   rE   r_   ra   rq   r   r   r   rd   rf   r#   
enable_gtk   sD   





















	













   #




r   c              C   s2   t drd S tjdd ddlm}  | tjd< d S )NZvteVtez0.0r   )r   )r(   r/   r   r,   r   r-   r.   )r   r"   r"   r#   
enable_vte  s
    r   c              C   s8   t drd S tjdd ddlm}  | tjd< d| _d S )NZpopplerPopplerz0.18r   )r   r   )r   r   r   )r(   r/   r   r,   r   r-   r.   Zpypoppler_version)r   r"   r"   r#   enable_poppler  s    
r   1.0c             C   s@   t d| rd S tjd|  ddlm} |tjd< |jj|j_	d S )NZwebkitWebKitr   )r   )
r(   r/   r   r,   r   r-   r.   ZWebViewZget_inspectorZget_web_inspector)r'   r   r"   r"   r#   enable_webkit#  s    

r   c              C   s2   t drd S tjdd ddlm}  | tjd< d S )NZgudevGUdevz1.0r   )r   )r(   r/   r   r,   r   r-   r.   )r   r"   r"   r#   enable_gudev-  s
    r   c              C   s>  t drd S tjdd ddlm}  | tjd< t|  | jj	| _
| jj| _| jj| _| jj| _dd | _dd | _dd	lm} |tjd
< t| ddlm} |tjd< t| ddlm} |tjd< t| ddlm} |tjd< t| |j| _|j| _ddlm} |tjd< t|| d ddlm} |tjd< t| d S )NZgstGstz0.10r   )r   c               S   s   dS )Nr   
      )r   r   r   r"   r"   r"   r"   r#   r   B  s    zenable_gst.<locals>.<lambda>c               S   s   dS )Nr   r   (   )r   r   r   r"   r"   r"   r"   r#   r   C  s    )GstInterfaceszgst.interfaces)GstAudioz	gst.audio)GstVideoz	gst.video)GstBasezgst.base)GstControllerzgst.controller)r   )
GstPbutilszgst.pbutils)r(   r/   r   r,   r   r-   r.   r$   ZRegistryr   Zregistry_get_defaultZElementregisterZelement_registerZElementFactoryZmakeZelement_factory_makeZCapsZnew_anyZcaps_new_anyZget_pygst_versionZget_gst_versionr   r   r   r   ZBaseTransformZBaseSinkr   r   )r   r   r   r   r   r   r   r"   r"   r#   
enable_gst6  s@    












r   c              C   sf   t drd S tjdd ddlm}  | tjd< t| dd | j| _	| j
| _| j| _| j| _| j| _d S )NZ	goocanvas	GooCanvasz2.0r   )r   ZGOO_CANVAS_)r   )r(   r/   r   r,   r   r-   r.   r$   ZCanvasItemSimpleZ
ItemSimpleZ
CanvasItemZItemZCanvasImager   ZCanvasGroupZGroupZ
CanvasRectZRect)r   r"   r"   r#   enable_goocanvasa  s    
r   )Nr   )N)r1   )r   )__doc__r-   rM   collectionsr   r   r   impr   ImportErrorr/   r,   r   r$   r%   r(   r0   r   rl   r   r   r   r   r   r   r   r"   r"   r"   r#   <module>!   s8   



!

   	


	+