B
    W\                 @   s   d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
mZmZ dZerddlZyed	dkZW n ek
r   d
ZY nX dddZdddZn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S )$z
Compatibility functions
    )print_functionN   )PYQT4)QFileDialog)is_text_stringto_text_string
TEXT_TYPESFQVariantTc             C   s    t rddlm} || S | S d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	   N)
PYQT_API_1ZPyQt4.QtCorer	   )Zpyobjr	    r   *lib/python3.7/site-packages/qtpy/compat.pyto_qvariant   s    r   c             C   sz   t rrt|tjst|tks$|tkr0||  S |tkr@| 	 S |t
krT|  d S |tkrh|  d S || S n| S d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   N)r
   
isinstancecollectionsCallableAssertionErrorr   r   ZtoStringboolZtoBoolintZtoIntfloatZtoDouble)qobjZconvfuncr   r   r   from_qvariant+   s    
r   c             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   )objr   r   r   r   @   s    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   )r   Zpytyper   r   r   r   F   s     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   getexistingdirectoryP   s    



r%   c          	   C   sX  |d krt d}yddlm} W n tk
r:   d }Y nX d}ytt | d }	W n0 tk
r   tt | }	|d k	r~| }d}Y nX tjdkrtj	tj
 }
}d\t_	t_
z@y|	||||||}W n$ tk
r   |	|||||}Y nX W d tjdkr|
| t_	t_
X |r|\}}n|}|d k	rPt|}t||rBt|}nd	d
 |D }||fS )Nr   r   )QStringTZ	AndFilterFr   )NNc             S   s   g | ]}t |qS r   )r   ).0fnamer   r   r   
<listcomp>   s    z(_qfiledialog_wrapper.<locals>.<listcomp>)r   ZOptionsZQtCorer&   ImportErrorgetattrAttributeErrorr   r   r   r   	TypeErrorr   r   )attrr   r   r    filtersselectedfilterr!   r&   Ztuple_returnedfuncr"   r#   r$   outputr   r   r   _qfiledialog_wrapperf   sB    







r3   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/   r0   r!   )r3   )r   r   r    r/   r0   r!   r   r   r   getopenfilename   s    r4   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/   r0   r!   )r3   )r   r   r    r/   r0   r!   r   r   r   getopenfilenames   s    r5   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/   r0   r!   )r3   )r   r   r    r/   r0   r!   r   r   r   getsavefilename   s    r6   )N)NN)N)NN)Nr   r   r   r   N)Nr   r   r   r   N)Nr   r   r   r   N)Nr   r   r   r   N)__doc__Z
__future__r   r   r   r   r   Z	QtWidgetsr   Z	py3compatr   r   r   r
   ZsipZgetapir,   r   r   ZShowDirsOnlyr%   r3   r4   r5   r6   r   r   r   r   <module>   s6   




 
< 
 
 