B
    .dD                 @   s   d Z ddlZddlmZmZmZmZ ddlmZ e	fZ
dd Zddd	Zd
ZdddZdddZdddejfddZdddZd ddZd!ddZd"ddZdd ZdS )#z
Compatibility functions
    N   )PYQT5PYQT6PYSIDE2PYSIDE6)QFileDialogc             C   s
   t | tS )zZReturn True if `obj` is a text string, False if it is anything else,
    like binary data.)
isinstancestr)obj r   X/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/qtpy/compat.pyis_text_string   s    r   c             C   s,   |dkrt | S t| t r| S t | |S dS )z&Convert `obj` to (unicode) text stringN)r	   r   )r
   encodingr   r   r   to_text_string   s
    
r   Fc             C   s   | S )zConvert Python object to QVariant
    This is a transitional function from PyQt API#1 (QVariant exist)
    to PyQt API#2 and Pyside (QVariant does not exist)r   )r
   r   r   r   to_qvariant,   s    r   c             C   s   | S )zConvert QVariant object to Python object
    This is a transitional function from PyQt API #1 (QVariant exist)
    to PyQt API #2 and Pyside (QVariant does not exist)r   )ZqobjZpytyper   r   r   from_qvariant2   s    r    c          	   C   sh   t jdkr$t jt j }}d\t _t _zt| |||}W dt jdkrR|| t _t _X t|sdt|}|S )zWrapper around QtGui.QFileDialog.getExistingDirectory static method
    Compatible with PyQt >=v4.4 (API #1 and #2) and PySide >=v1.0win32)NNN)sysplatformstdoutstderrr   ZgetExistingDirectoryr   r   )parentcaptionbasediroptions_temp1_temp2resultr   r   r   getexistingdirectory<   s    



r   c             C   sz   |d krt d}tt | }tjdkr@tjtj }}	d\t_t_|||||||}
tjdkrj||	 t_t_|
\}}||fS )Nr   r   )NN)r   Optiongetattrr   r   r   r   )attrr   r   r   filtersselectedfilterr   funcr   r   r   outputr   r   r   _qfiledialog_wrapperR   s    



r'   c          	   C   s   t d| |||||dS )zWrapper around QtGui.QFileDialog.getOpenFileName static method
    Returns a tuple (filename, selectedfilter) -- when dialog box is canceled,
    returns a tuple of empty strings
    Compatible with PyQt >=v4.4 (API #1 and #2) and PySide >=v1.0ZgetOpenFileName)r   r   r   r#   r$   r   )r'   )r   r   r   r#   r$   r   r   r   r   getopenfilenamei   s    r(   c          	   C   s   t d| |||||dS )a   Wrapper around QtGui.QFileDialog.getOpenFileNames static method
    Returns a tuple (filenames, selectedfilter) -- when dialog box is canceled,
    returns a tuple (empty list, empty string)
    Compatible with PyQt >=v4.4 (API #1 and #2) and PySide >=v1.0ZgetOpenFileNames)r   r   r   r#   r$   r   )r'   )r   r   r   r#   r$   r   r   r   r   getopenfilenamesu   s    r)   c          	   C   s   t d| |||||dS )zWrapper around QtGui.QFileDialog.getSaveFileName static method
    Returns a tuple (filename, selectedfilter) -- when dialog box is canceled,
    returns a tuple of empty strings
    Compatible with PyQt >=v4.4 (API #1 and #2) and PySide >=v1.0ZgetSaveFileName)r   r   r   r#   r$   r   )r'   )r   r   r   r#   r$   r   r   r   r   getsavefilename   s    r*   c             C   sB   t str ddlm} ||  S ts(tr>ddlm} || S dS )zgWrapper around sip.isdeleted and shiboken.isValid which tests whether
    an object is currently alive.r   )sip)shibokenN)	r   r   r   r+   Z	isdeletedr   r   r,   ZisValid)objectr+   r,   r   r   r   isalive   s    r.   )N)N)NN)Nr   r   r   r   N)Nr   r   r   r   N)Nr   r   r   r   N)Nr   r   r   r   N)__doc__r   r   r   r   r   r   Z	QtWidgetsr   r	   Z
TEXT_TYPESr   r   Z
PYQT_API_1r   r   ZShowDirsOnlyr   r'   r(   r)   r*   r.   r   r   r   r   <module>   s(   



 
 
 
 
