
cV]c           @  sv  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 e Z e r d d l Z y e j d  d k Z Wn e k
 r e Z n Xd d	  Z d d d
  Z n d d  Z d d d  Z d d d e j d  Z d d d d d d d  Z d d d d d d d  Z d d d d d d d  Z d d d d d d d  Z d S(   s   
Compatibility functions
i(   t   print_functionNi   (   t   PYQT4(   t   QFileDialog(   t   is_text_stringt   to_text_stringt
   TEXT_TYPESt   QVariantc         C  s(   t  r  d d l m } | |   S|  Sd S(   s   Convert 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)i(   R   N(   t
   PYQT_API_1t   PyQt4.QtCoreR   (   t   pyobjR   (    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   to_qvariant   s    
c         C  s   t  r t | t j  s t  | t k s6 | t k rF | |  j    S| t k r\ |  j	   S| t
 k rv |  j   d S| t k r |  j   d S| |   Sn |  Sd S(   s   Convert 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)i    N(   R   t
   isinstancet   collectionst   Callablet   AssertionErrorR   R   t   toStringt   boolt   toBoolt   intt   toIntt   floatt   toDouble(   t   qobjt   convfunc(    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   from_qvariant+   s    
c         C  s   |  S(   s   Convert 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)(    (   t   obj(    (    s*   lib/python2.7/site-packages/qtpy/compat.pyR
   @   s    c         C  s   |  S(   s   Convert 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   t   pytype(    (    s*   lib/python2.7/site-packages/qtpy/compat.pyR   F   s    t    c         C  s   t  j d k r7 t  j t  j } } d \ t  _ t  _ n  z t j |  | | |  } Wd t  j d k r{ | | t  _ t  _ n  Xt |  s t |  } n  | S(   s   Wrapper around QtGui.QFileDialog.getExistingDirectory static method
    Compatible with PyQt >=v4.4 (API #1 and #2) and PySide >=v1.0t   win32N(   NN(	   t   syst   platformt   stdoutt   stderrt   NoneR   t   getExistingDirectoryR   R   (   t   parentt   captiont   basedirt   optionst   _temp1t   _temp2t   result(    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   getexistingdirectoryP   s    c         C  s  | d  k r t j d  } n  y d d l m } Wn t k
 rK d  } n Xt } y t t |  d  }	 Wn> t k
 r t t |   }	 | d  k	 r |   } t	 } q n Xt
 j d k r t
 j t
 j }
 } d \ t
 _ t
 _ n  zO y |	 | | | | | |  } Wn) t k
 r.|	 | | | | |  } n XWd  t
 j d k rX|
 | t
 _ t
 _ n  X| rn| \ } } n | } | d  k	 rt |  } t | |  rt |  } qg  | D] } t |  ^ q} n  | | f S(   Ni    i   (   t   QStringt	   AndFilterR   (   NN(   R!   R   t   Optionst   QtCoreR+   t   ImportErrort   Truet   getattrt   AttributeErrort   FalseR   R   R   R    t	   TypeErrorR   R   (   t   attrR#   R$   R%   t   filterst   selectedfilterR&   R+   t   tuple_returnedt   funcR'   R(   R)   t   outputt   fname(    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   _qfiledialog_wrapperf   sD    
	  "c         C  s.   t  d d |  d | d | d | d | d | S(   s   Wrapper 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.0t   getOpenFileNameR#   R$   R%   R6   R7   R&   (   R<   (   R#   R$   R%   R6   R7   R&   (    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   getopenfilename   s    c         C  s.   t  d d |  d | d | d | d | d | S(   s   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.0t   getOpenFileNamesR#   R$   R%   R6   R7   R&   (   R<   (   R#   R$   R%   R6   R7   R&   (    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   getopenfilenames   s    c         C  s.   t  d d |  d | d | d | d | d | S(   s   Wrapper 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.0t   getSaveFileNameR#   R$   R%   R6   R7   R&   (   R<   (   R#   R$   R%   R6   R7   R&   (    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   getsavefilename   s    (   t   __doc__t
   __future__R    R   R   R   R   t	   QtWidgetsR   t	   py3compatR   R   R   R3   R   t   sipt   getapiR2   R0   R!   R
   R   t   ShowDirsOnlyR*   R<   R>   R@   RB   (    (    (    s*   lib/python2.7/site-packages/qtpy/compat.pyt   <module>   s6   

		<