ó
šxŠ\c           @   s…   d  Z  d d l Z d d l Z d d l m Z m Z m Z m Z m Z d d l Z d d l	 m
 Z
 d e f d „  ƒ  YZ d „  Z d S(	   sD   
This module implements clipboard handling on Windows using ctypes.
iÿÿÿÿN(   t   c_size_tt   c_wchart	   c_wchar_pt	   get_errnot   sizeofi   (   t   PyperclipWindowsExceptiont   CheckedCallc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   t  t |  ƒ j d | ƒ d  S(   Nt   f(   t   superR   t   __setattr__(   t   selfR   (    (    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt   __init__   s    c         G   s<   |  j  | Œ  } | r8 t ƒ  r8 t d |  j  j ƒ ‚ n  | S(   Ns   Error calling (   R   R   R   t   __name__(   R
   t   argst   ret(    (    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt   __call__   s    c         C   s   t  |  j | | ƒ d  S(   N(   t   setattrR   (   R
   t   keyt   value(    (    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyR	      s    (   R   t
   __module__R   R   R	   (    (    (    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyR      s   		c             s~  d d l  m }  m } m } m } m } m } m } m } m	 } m
 }	 m }
 t j } t | j j ƒ ‰ | | | | | | | | | | | | g ˆ _ | ˆ _ t | j j ƒ ‰ | g ˆ _ | ˆ _ | j j ‰ | g ˆ _ | ˆ _ t | j j ƒ ‰ g  ˆ _ | ˆ _ t | j j ƒ ‰ g  ˆ _ | ˆ _ t | j j ƒ ‰ |	 g ˆ _ |
 ˆ _ t | j j ƒ ‰ |	 |
 g ˆ _ |
 ˆ _ t | j j ƒ ‰	 |	 t g ˆ	 _ |  ˆ	 _ t | j j ƒ ‰
 |  g ˆ
 _ | ˆ
 _ t | j j ƒ ‰ |  g ˆ _ | ˆ _ d ‰ d ‰  t j ‡ ‡ f d †  ƒ ‰ t j ‡ ‡ f d †  ƒ ‰ ‡  ‡ ‡ ‡ ‡	 ‡
 ‡ ‡ ‡ f	 d †  } ‡  ‡ ‡ f d †  } | | f S(	   Niÿÿÿÿ(   t   HGLOBALt   LPVOIDt   DWORDt   LPCSTRt   INTt   HWNDt	   HINSTANCEt   HMENUt   BOOLt   UINTt   HANDLEi   i   c          3   sH   ˆ  d d d d d d d d d d d d ƒ }  z	 |  VWd ˆ |  ƒ Xd S(   s=   
        Context that provides a valid Windows hwnd.
        i    t   STATICN(   t   None(   t   hwnd(   t   safeCreateWindowExAt   safeDestroyWindow(    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt   windowM   s
    	c         3   s   t  j  ƒ  d } t } x9 t  j  ƒ  | k  rQ ˆ  |  ƒ } | rA Pn  t  j d ƒ q W| sg t d ƒ ‚ n  z	 d VWd ˆ ƒ  Xd S(   sˆ   
        Context manager that opens the clipboard and prevents
        other applications from modifying the clipboard content.
        g      à?g{®Gáz„?s   Error calling OpenClipboardN(   t   timet   Falset   sleepR   (   R!   t   tt   success(   t   OpenClipboardt   safeCloseClipboard(    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt	   clipboard[   s    		c            s®   ˆ ƒ  Ÿ } ˆ | ƒ Š ˆ ƒ  |  rž t  |  ƒ d } ˆ ˆ | t t ƒ ƒ } ˆ | ƒ } t j t | ƒ t |  ƒ | t t ƒ ƒ ˆ | ƒ ˆ ˆ  | ƒ n  Wd  QXWd  QXd  S(   Ni   (   t   lenR   R   t   ctypest   memmoveR   (   t   textR!   t   countt   handlet   locked_handle(	   t   CF_UNICODETEXTt   GMEM_MOVEABLER,   t   safeEmptyClipboardt   safeGlobalAlloct   safeGlobalLockt   safeGlobalUnlockt   safeSetClipboardDataR$   (    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt   copy_windowss   s    
c             s:   ˆ d  ƒ ( ˆ ˆ  ƒ }  |  s# d St |  ƒ j SWd  QXd  S(   Nt    (   R    R   R   (   R2   (   R4   R,   t   safeGetClipboardData(    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt   paste_windows   s
    (    t   ctypes.wintypesR   R   R   R   R   R   R   R   R   R   R   R.   t   windllR   t   user32t   CreateWindowExAt   argtypest   restypet   DestroyWindowR*   t   CloseClipboardt   EmptyClipboardt   GetClipboardDatat   SetClipboardDatat   kernel32t   GlobalAllocR    t
   GlobalLockt   GlobalUnlockt
   contextlibt   contextmanager(   R   R   R   R   R   R   R   R   R   R   R   R@   R;   R>   (    (   R4   R5   R*   R,   R+   R"   R#   R6   R=   R7   R8   R9   R:   R$   s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt   init_windows_clipboard   sP    L													'(   t   __doc__RN   R.   R    R   R   R   R   R%   t
   exceptionsR   t   objectR   RP   (    (    (    s:   lib/python2.7/site-packages/pandas/io/clipboard/windows.pyt   <module>   s   (