
    /~^Ч                        d Z dZddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZmZmZmZmZ ddlZddlZ	 ddlmZ dZn# e$ r dZY nw xY wej        dk    rddlZerdd	lmZ 	 ej        j                                         n# e$ r Y nw xY wej        j                            d          Z G d
 dej                  Zd Z e Z!d1dZ"e"Z#d Z$e$Z%d Z&e&Z'n0ej        dk    r}ddl(m)Z)m*Z* ddl+m,Z,  ej-         ej.        d                    Z/ e)d          Z0e01                    d            ej-         ej.        d                    Z2eZ3eZ4 e,de4           eZ5 e,de5           eZ6eZ7eZ8eZ9eZ:eZ;e3ge2j<        _=        ee2j<        _>        e5e9ege2j?        _=        e4e2j?        _>        e5e7e*e:ge2j@        _=        e4e2j@        _>        e5e;ee	ge2jA        _=        e4e2jA        _>        e4e8e
ge2jB        _=        de2jB        _>        e4e7ge2jC        _D        de2jC        _>        e6e4ge2jE        _=        de2jE        _>        g e2jF        _=        e3e2jF        _>        d ZGeGZ!d1dZHeHZ#d ZIeIZ%d ZJeJZ'n ejK                    dk    rddlLmMZM ddlNZNdZO	  ejP        dd gejQ        ejQ        !          ZReRS                                dk    ZOn$# eT$ rZUeUjN        eNjV        k    rn Y dZU[UndZU[Uww xY w eMejW        d"                   ZXd# ZYeYZ!d1d$ZZeZZ#d% Z[e[Z%d& Z\e\Z'ej]        d         d'k    Z^ ejK                    dk    rXe^r)	 ddl_Z`e`Zadd(l_mbZb ng# e$ r  ejc        d)           Y nPw xY w	 ddl`Z`dd*l`maZa dd(l`mbZb n:# e$ r  ejc        d+           Y n#w xY we^rddl_Z`e`Zadd(l_mbZb nddl`Z`dd*l`maZa dd(l`mbZb d,Zd G d- d.          Zed/ Zfegd0k    r ee             dS dS )2a  
Features we should consider adding:
* Register a global hotkey for copying/logging info. (Should this hotkey be configurable?)

Features that have been considered and rejected:

* The Save Log/Save Screenshot buttons should open a file dialog box.
* The Save Log button should append text, instead of overwrite it.
* The log text area should prepopulate itself with the contents of the given filename.
* The button delay should be configurable instead of just set to 3 seconds.
z0.1.3    N)	c_boolc_int32c_int64c_size_tc_uint16c_uint32c_void_pcdllutil)ImageTFwin32)	ImageGrabc                   2    e Zd Zdej        fdej        fgZdS )POINTxyN)__name__
__module____qualname__ctypesc_long_fields_     U/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/mouseinfo/__init__.pyr   r   <   s)        &-(&-(*r   r   c                      t                      } t          j        j                            t          j        |                      | j        | j        fS N)r   r   windlluser32GetCursorPosbyrefr   r   )cursors    r   _winPositionr#   @   s=    ))&,v*>*>???&(##r   c                     	 t          j                    }| |                    |            n# t          $ r t	          d          w xY w|S )NzGPillow module must be installed to use screenshot functions on Windows.)r   grabsave	NameErrorImportError)filenameims     r   _winScreenshotr+   G   sa    	i!!B#!!! 	i 	i 	ighhh	i	s	   *- Ac                      t           j        j                            d          t           j        j                            d          fS )Nr      )r   r   r   GetSystemMetricsr   r   r   _winSizer/   S   s4    $55a88&-:N:_:_`a:b:bccr   c                     t           j        j                            t          | |          }|dz  }|dz  }|dz  }|dz  }|}|||fS )N   )r   r   gdi32GetPixeldc)r   r   colorRefredgreenblues         r   _winGetPixelr9   W   sV    =&//Aq99nS3SUD!!r   darwin)	ObjCClassCGPoint)register_preferred_encodingAppKitNSEventmouseLocationCoreGraphicss   ^{__CGEvent=}s   ^{__CGEventSource=}c                      t           j        } t          | j                  t          t                              d          | j        z
            fS )Nr   )r?   r@   intr   core_graphicsCGDisplayPixelsHighr   )locs    r   _macPositionrG      s:    #35zz3}@@CCceKLLLLr   c                 "   | | }n4dt           j                                                             d          z  }t          j        dd|g           t          j        |          }|                                 | t          j	        |           |S )Nzscreenshot%s.png%Y-%m%d_%H-%M-%S-%fscreencapturez-x)
datetimenowstrftime
subprocesscallr   openloadosunlinkr)   tmpFilenamer*   s      r   _macScreenshotrV      s    "KK,0A0E0E0G0G0P0PQf0g0ghK$<===Z$$ 				Ik"""	r   c                      t                               t                                                     t                               t                                                     fS r   )rD   CGDisplayPixelsWideCGMainDisplayIDrE   r   r   r   _macSizerZ      sF    --m.K.K.M.MNN--m.K.K.M.MNN
 	
r   c                 v    t                                          | |f          }|d         |d         |d         fS Nr   r-      
screenshotgetpixelr   r   rgbValues      r   _macGetPixelrc      6    <<((!Q00{HQK!44r   Linux)Displaywhichscrot)stdoutstderrDISPLAYc                      t                                           j                                        j        } | d         | d         fS )Nroot_xroot_y)_displayscreenrootquery_pointer_data)coords    r   _linuxPositionru      s6    !!&4466<Xh//r   c                 z   t           st          d          | | }n4dt          j                                                            d          z  }t           rWt          j        dd|g           t          j        |          }|	                                 | t          j        |           |S t          d          )Nz_"scrot" must be installed to use screenshot functions in Linux. Run: sudo apt-get install scrotz.screenshot%s.pngrI   rh   z-zzqThe scrot program must be installed to take a screenshot with PyScreeze on Linux. Run: sudo apt-get install scrot)scrotExistsNotImplementedErrorrK   rL   rM   rN   rO   r   rP   rQ   rR   rS   	ExceptionrT   s      r   _linuxScreenshotrz      s     	I%  'H  I  I  I"KK-1B1F1F1H1H1Q1QRg1h1hiK 	QOWdK8999K((B GGIII	+&&&I  P  Q  Q  Qr   c                  z    t                                           j        t                                           j        fS r   )ro   rp   width_in_pixelsheight_in_pixelsr   r   r   
_linuxSizer~      s'      0(//2C2C2TTTr   c                 v    t                                          | |f          }|d         |d         |d         fS r\   r^   ra   s      r   _linuxGetPixelr     rd   r   r]   )EventzvNOTE: You must install tkinter on Linux to use MouseInfo. Run the following: sudo apt-get install python-tk python-dev)ttkzxNOTE: You must install tkinter on Linux to use MouseInfo. Run the following: sudo apt-get install python3-tk python3-dev   c                   h    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZdS )MouseInfoWindowc                    t                      \  }}| j                            || j        z
  d|| j        z
             t                      \  }}t          s| j                            d           nt          j	        dk    r| j                            d           npd|cxk    r|k     rn nd|cxk    r|k     sn | j                            d           n6t          ||          \  }}}| j                            |d|d|           t          s| j                            d           n@t          j	        dk    r| j                            d           nd|cxk    r|k     rn nd|cxk    r|k     sn | j                            d           nt          |          dd                                                              dd          }t          |          dd                                                              dd          }	t          |          dd                                                              dd          }
d	||	|
}| j                            |           t          r/t          j	        dk    sd|cxk    r|k     rn nd|cxk    r|k     sn | j                            d
           n| j                            |           | j        r'| j                            d| j                  | _        d S d S )N,NA_Pillow_unsupportedr:   NA_on_macOSr   NA_on_multimonitor_setupsr]   0#black)
backgroundd   )positionxyTextboxSVsetxOriginyOriginsize_PILLOW_INSTALLEDrgbSVsysplatformgetPixelrgbHexSVhexupperrjust
colorFrame	configure	isRunningrq   after_updateMouseInfoTextFields_updateMouseInfoJob)selfr   r   widthheightrgbrHexgHexbHexhexColors               r   r   z*MouseInfoWindow._updateMouseInfoTextFields(  s    zz1DL(8(8(8!dl:J:JKLLL
 v  	3JNN23333\X%%JNN=))))q....5.....Q!____f____JNN67777 q!nnGAq!JNNAAAqq1222  	(M56666\X%%Mm,,,,q....5.....Q!____f____M9:::: q66!"":##%%++As33Dq66!"":##%%++As33Dq66!"":##%%++As33DD$(D$$5HMh'''! 	;s|x'?'?!q....SX.....]^bc]l]l]l]lfl]l]l]l]lO%%%9999 O%%%::: > 	'+ysD<['\'\D$$$Fr   c                 h   	 t          j        |           | j                            d|z              d S # t           j        $ rm}t          j                    dk    r| j                            d           n0| j                            dt          |          z              Y d }~d S Y d }~d S d }~ww xY w)NzCopied re   z-Copy failed. Run "sudo apt-get install xsel".zClipboard error: )	pyperclipcopystatusbarSVr   PyperclipExceptionr   systemstr)r   
textToCopyes      r   	_copyTextzMouseInfoWindow._copyTextd  s    	CN:&&&  Z!788888+ 	C 	C 	C  G++ $$%TUUUU $$%83q66%ABBBBBBBBB VUUUUU	Cs   15 B1AB,,B1c                 <   t          |          dk    rt          |d         t                    rd}| j                                        dk    rPt          |          dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d	           d S | 
                    | j                                                   | j        	                    d
           d S )Nr   r   on  r]   	Copy in 3r-   	Copy in 2	Copy in 1Copy XY)len
isinstancer   delayEnabledSVgetrq   r   _copyXyMouseInfoxyCopyButtonSVr   r   r   r   argss     r   r   z MouseInfoWindow._copyXyMouseInfoo  sp    t99q==ZQ77=D""$$,,TaIOOD$"7;;;##K00000YY!^^Q1IOOD$"7;;;##K00000YY!^^Q1IOOD$"7;;;##K00000 NN4+//11222##I.....r   c                 <   t          |          dk    rt          |d         t                    rd}| j                                        dk    rPt          |          dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d	           d S | 
                    | j                                                   | j        	                    d
           d S )Nr   r   r   r   r]   r   r-   r   r   Copy RGB)r   r   r   r   r   rq   r   _copyRgbMouseInforgbCopyButtonSVr   r   r   r   s     r   r   z!MouseInfoWindow._copyRgbMouseInfo  sm    t99q==ZQ77=D""$$,,TaIOOD$"8!<<< $$[11111YY!^^Q1IOOD$"8!<<< $$[11111YY!^^Q1IOOD$"8!<<< $$[11111 NN4:>>++,,, $$Z00000r   c                 <   t          |          dk    rt          |d         t                    rd}| j                                        dk    rPt          |          dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d	           d S | 
                    | j                                                   | j        	                    d
           d S )Nr   r   r   r   r]   r   r-   r   r   zCopy RGB Hex)r   r   r   r   r   rq   r   _copyRgbHexMouseInforgbHexCopyButtonSVr   r   r   r   s     r   r   z$MouseInfoWindow._copyRgbHexMouseInfo  so    t99q==ZQ77=D""$$,,TaIOOD$";Q???#''44444YY!^^Q1IOOD$";Q???#''44444YY!^^Q1IOOD$";Q???#''44444 NN4=,,..///#''77777r   c                 J   | j                                         d| j                                        d| j                                        }t	          |          dk    rt          |d         t                    rd}| j                                        dk    rPt	          |          dk    r=| j        	                    d| j
        d           | j                            d           d S t	          |          dk    rI|d         dk    r=| j        	                    d| j
        d           | j                            d	           d S t	          |          dk    rI|d         dk    r=| j        	                    d| j
        d           | j                            d
           d S | j                                         d| j                                        d| j                                        }|                     |           | j                            d           d S )N r   r   r   r   r]   r   r-   r   r   Copy All)r   r   r   r   r   r   r   r   rq   r   _copyAllMouseInfoallCopyButtonSVr   r   )r   r   textFieldContentss      r   r   z!MouseInfoWindow._copyAllMouseInfo  s    +/*:*>*>*@*@*@*@*.*..*:*:*:*:*.-*;*;*=*=*=?
 t99q==ZQ77=D""$$,,TaIOOD$"8!<<< $$[11111YY!^^Q1IOOD$"8!<<< $$[11111YY!^^Q1IOOD$"8!<<< $$[11111 /3.>.B.B.D.D.D.D.2jnn.>.>.>.>.2m.?.?.A.A.A!C NN,--- $$Z00000r   c                    t          |          dk    rt          |d         t                    rd}| j                                        dk    rPt          |          dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d	           d S | j
                            d
d          d| j                                        z  z   }| j        	                    |           |                     |           | j        	                    d| j                                        z              | j        	                    d           d S )Nr   r   r   r   r]   Log in 3r-   Log in 2Log in 11.0end-1c%s
Logged Log XY)r   r   r   r   r   rq   r   _logXyMouseInfoxyLogButtonSVr   logTextarear   logTextboxSV_setLogTextAreaContentsr   r   r   logContentss      r   r   zMouseInfoWindow._logXyMouseInfo  s    t99q==ZQ77=D""$$,,TaIOOD$"6:::"":.....YY!^^Q1IOOD$"6:::"":.....YY!^^Q1IOOD$"6:::"":..... *..uh??&DL\L`L`LbLbBccK!!+...((555  T-=-A-A-C-C!CDDD""8,,,,,r   c                    t          |          dk    rt          |d         t                    rd}| j                                        dk    rPt          |          dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d	           d S | j
                            d
d          d| j                                        z  z   }| j        	                    |           |                     |           | j        	                    d| j                                        z              | j        	                    d           d S )Nr   r   r   r   r]   r   r-   r   r   r   r   r   r   Log RGB)r   r   r   r   r   rq   r   _logRgbMouseInforgbLogButtonSVr   r   r   r   r   r   r   s      r   r   z MouseInfoWindow._logRgbMouseInfo  s    t99q==ZQ77=D""$$,,TaIOOD$"7;;;##J/////YY!^^Q1IOOD$"7;;;##J/////YY!^^Q1IOOD$"7;;;##J///// *..uh??&DJNNL\L\B]]K!!+...((555  TZ^^-=-=!=>>>##I.....r   c                    t          |          dk    rt          |d         t                    rd}| j                                        dk    rPt          |          dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d	           d S | j
                            d
d          d| j                                        z  z   }| j        	                    |           |                     |           | j        	                    d| j                                        z              | j        	                    d           d S )Nr   r   r   r   r]   r   r-   r   r   r   r   r   r   zLog RGB Hex)r   r   r   r   r   rq   r   _logRgbHexMouseInforgbHexLogButtonSVr   r   r   r   r   r   r   s      r   r   z#MouseInfoWindow._logRgbHexMouseInfo  s    t99q==ZQ77=D""$$,,TaIOOD$":A>>>"&&z22222YY!^^Q1IOOD$":A>>>"&&z22222YY!^^Q1IOOD$":A>>>"&&z22222 *..uh??&DML]L]L_L_B``K!!+...((555  T]->->-@-@!@AAA"&&}55555r   c                 \   t          |          dk    rt          |d         t                    rd}| j                                        dk    rPt          |          dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d           d S t          |          dk    rI|d         dk    r=| j                            d| j        d           | j        	                    d	           d S | j
                                        d
| j                                        d
| j                                        }| j                            dd          d|z  z   }| j        	                    |           |                     |           | j        	                    d|z              | j        	                    d           d S )Nr   r   r   r   r]   r   r-   r   r   r   r   r   r   r   Log All)r   r   r   r   r   rq   r   _logAllMouseInfoallLogButtonSVr   r   r   r   r   r   r   r   )r   r   r   r   s       r   r   z MouseInfoWindow._logAllMouseInfo.  s    t99q==ZQ77=D""$$,,TaIOOD$"7;;;##J/////YY!^^Q1IOOD$"7;;;##J/////YY!^^Q1IOOD$"7;;;##J///// /3.>.B.B.D.D.D.D.2jnn.>.>.>.>.2m.?.?.A.A.A!C *..uh??&L]B^^K!!+...((555  ->!>???##I.....r   c                 0   |                                 }t          |                    d                    dk    rd S |                    d          \  }}|                                }|                                }|                                r|                                sd S t          |          | _        t          |          | _        | j        	                    dt          | j                  z   dz   t          | j                  z              d S )Nr   r]   zSet XY Origin to z, )r   r   splitstrip	isdecimalrC   r   r   r   r   r   )r   svcontentsr   r   s        r   _xyOriginChangedz MouseInfoWindow._xyOriginChangedL  s    6688x~~c""##q((F~~c""1GGIIGGII{{}} 	AKKMM 	F1vv1vv03t|3D3DDtKcRVR^N_N__`````r   c                 b   t           rK| j                            dt          j                   | j                            t          j        |           n&| j                            dt          j        |           | j                                        \  }}| j                            |           d S )Nr   )	RUNNING_PYTHON_2r   deletetkinterENDinsertreplaceyviewyview_moveto)r   r   topOfTextAreabottomOfTextAreas       r   r   z'MouseInfoWindow._setLogTextAreaContentsY  s     	F##E7;777##GK====$$UGKEEE +/*:*@*@*B*B''%%&677777r   c                    	 t          | j                                        d          5 }|                    | j                                                   d d d            n# 1 swxY w Y   | j                            d| j                                        z              d S # t          $ r5}| j                            dt          |          z              Y d }~d S d }~ww xY w)NwzLog file saved to ERROR: )	rP   logFilenameSVr   writer   r   r   ry   r   )r   r   for   s       r   _saveLogFilezMouseInfoWindow._saveLogFilee  s#   	Rd(,,..44 2*..001112 2 2 2 2 2 2 2 2 2 2 2 2 2 2
   !58J8N8N8P8P!PQQQQQ  	5 	5 	5  SVV!3444444444	5s:   'B# -A"B# "A&&B# )A&*B# #
C"-*CC"c                    t           s| j                            d           d S 	 t          | j                                                   | j                            d| j                                        z              d S # t          $ r5}| j                            dt          |          z              Y d }~d S d }~ww xY w)NzERROR: NA_Pillow_unsupportedzScreenshot file saved to r  )r   r   r   r_   screenshotFilenameSVr   ry   r   )r   r   r   s      r   _saveScreenshotFilez#MouseInfoWindow._saveScreenshotFiler  s     ! 	  !?@@@F	`t04466777   !<t?X?\?\?^?^!^_____  	5 	5 	5  SVV!3444444444	5s   &B 
C *B;;C c           	      $    d _         t          j                     _         j                            dt
          z               j                            dd           t          rt          j         j                  }nt          j         j        d          }|
                    ddt          j        t          j        t          j        t          j        f           |                    dd	
           |                    dd	
           d	}t          j                     _         j                            d           t          j        |d j        dd          }|
                    d	|dt          j                   t          j                     _         j                            d           t          j        | j        t.           j                   _         j        
                    d|t          j                    j                            d j                   t          j                     _         j                            d           t          j        | j        t.           j                   _         j        
                    d|t          j                    j                            d j                   t          j                     _        t          j                     _        t          j                     _         t          j                     _!        t          j                     _"        t          j                     _#        t          j                     _$        t          j                     _%        |d	z  }t          j&        |d j                   _'         j'        
                    d|t          j        t          j        f           t          j(        |d          
                    d	|t          j                   t          j                     _)         j)                            d           t          j        | j)        t.           j*                   _+         j+        
                    d|t          j                    j+                            d j*                   t          j                     _,         j,                            d           t          j        | j,        t.           j-                   _.         j.        
                    d|t          j                    j.                            d j-                   |d	z  }t          j&        |d j                   _/         j/        
                    d|t          j        t          j        f           t          j(        |d          
                    d	|t          j                   t          j                     _0         j0                            d           t          j        | j0        t.           j1                   _2         j2        
                    d|t          j                    j2                            d j1                   t          j                     _3         j3                            d           t          j        | j3        t.           j4                   _5         j5        
                    d|t          j                    j5                            d j4                   |d	z  }t          j&        |d j                    _6         j6        
                    d|t          j        t          j        f           t          j(        |d           
                    d	|t          j                   t          j                     _7         j7                            d!           t          j        | j7        t.           j8                   _9         j9        
                    d|t          j                    j9                            d j8                   t          j                     _:         j:                            d"           t          j        | j:        t.           j;                   _<         j<        
                    d|t          j                    j<                            d j;                   |d	z  }t          j        |d#d#$           _=         j=        
                    d|t          j        t          j        f           t          j(        |d%          
                    d	|t          j                   |d	z  }d _>        d _?         j!                            d&           t          j(        |d'          
                    d	|t          j                    j!        @                    d( j!        f fd)	           t          j&        |d j!                   _A         jA        
                    d|t          j        t          j        f           |d	z  }t          jB        |d*d+$           _C         jC        
                    d	|dt          j        t          j        t          j        t          j        f           t          jD        |t          jE         jC        jF        ,           _G         jG        
                    d-|t          j        t          j        f            jG        j         jC        d.<   |d	z  }t          j&        |d j#                   _H         jH        
                    d	|dt          j        t          j        f           t          j        |d/t.           jI        0           _J         jJ        
                    d|t          j                    jJ                            d jI                    j#                            t          jL        M                    t          jN                    d1                     |d	z  }t          j&        |d j$                  }|
                    d	|dt          j        t          j        f           t          j        |d2t.           jO        0           _P         jP        
                    d|t          j                    jP                            d jO                    j$                            t          jL        M                    t          jN                    d3                     |d	z  }t          j(        |t          jQ         j%        4          }|
                    d	|d-t          j        t          j        f           |R                                D ]}}| jG        k    r|S                    dd5           %| jC        k    r|S                    d6d5           H||k    r|S                    dd65           f|S                    dd5           ~ j        T                    d7t          jU                   t          jV         j                  } j        W                    |8           t          jV        |          }|X                    d9 j        d:d-;           |X                    d< j*        d=d-;           |X                    d> j1        d?d-;           |X                    d@ j8        dAdB;           |Y                    dC|dD           t          jV        |          }	|	X                    dE j        dFd;           |	X                    dG j-        dHd;           |	X                    dI j4        dJd;           |	X                    dK j;        dLdM;           |Y                    dN|	dD           t          jV        |          }
|
X                    dOdP d+Q           |Y                    dR|
dD            j        Z                    dS j                    j        Z                    dT j*                    j        Z                    dU j1                    j        Z                    dV j8                    j        Z                    dW j                    j        Z                    dX j-                    j        Z                    dY j4                    j        Z                    dZ j;                    j        [                    d[d[            j'        \                                  j        ]                    d j^                   __         j        `                    d\d            j        a                                  j        b                                  j        c                     j_                   d[ _         	  j        d                                 d]S # t          je        $ r Y d]S w xY w)^zLaunches the MouseInfo window, which displays XY coordinate and RGB
        color information for the mouse's current position.Tz
MouseInfo i  r   z	3 3 12 12)paddingr   )columnrowstickyr-   )weightr   z3 Sec. Button Delayoff)textvariableonvalueoffvaluer]   )r  r  
columnspanr  zCopy All (F1))textvariabler   command   z<Return>zLog All (F5)   r   )r   r  zXY Position)r  zCopy XY (F2)zLog XY (F6)z	RGB ColorzCopy RGB (F3)zLog RGB (F7)z
RGB as HexzCopy RGB Hex (F4)zLog RGB Hex (F8)2   )r   r   Colorz0, 0z	XY Originr  c                 .                         |          S r   )r   )nameindexmoder   r   s       r   <lambda>z*MouseInfoWindow.__init__.<locals>.<lambda>  s    QUQfQfgiQjQj r         )orientr     yscrollcommandzSave Log)r  r   r  zmouseInfoLog.txtzSave ScreenshotzmouseInfoScreenshot.png)reliefr  )padxpady)r  r   z*tearOff)menur   F1)labelr  accelerator	underliner   F2r   F3zCopy RGB as HexF4   Copy)r-  r+  r/  r   F5r   F6r   F7zLog RGB as HexF8   LogzOnline Documentationc                  *    t          j        d          S )Nz https://mouseinfo.readthedocs.io)
webbrowserrP   r   r   r   r"  z*MouseInfoWindow.__init__.<locals>.<lambda>V  s    :?[}K~K~ r   )r-  r  r/  Helpz<F1>z<F2>z<F3>z<F4>z<F5>z<F6>z<F7>z<F8>Fz-topmostN)fr   r   Tkrq   title__version__minsizer   Framer   gridNWEScolumnconfigurerowconfigure	StringVarr   r   Checkbuttonr   ButtonMOUSE_INFO_BUTTON_WIDTHr   allCopyButtonbindr   r   allLogButtonr   r   r   
xyOriginSVr   r  r
  r   EntryxyInfoTextboxLabelr   r   xyCopyButtonr   r   xyLogButtonrgbSV_entryr   r   rgbCopyButtonr   r   rgbLogButtonrgbHexSV_entryr   r   rgbHexCopyButtonr   r   rgbHexLogButtonr   r   r   tracexyOriginSV_entryTextr   	ScrollbarVERTICALr   logTextareaScrollbarlogFilenameTextboxr  saveLogButtonrR   pathjoingetcwdr  saveScreenshotButtonSUNKENwinfo_childrengrid_configure
option_addFALSEMenuconfigadd_commandadd_cascadebind_all	resizablefocusr   r   r   
attributesupdatemainloopafter_canceldestroyTclError)r   	mainframeCUR_ROWdelayCheckbox&G_MOUSE_INFO_SCREENSHOT_FILENAME_entry	statusbarchildr+  copyMenulogMenuhelpMenus   `          r   __init__zMouseInfoWindow.__init__  s     JLL		{2333	#s###  	Bdi00II	$)[AAAI 	aQ	79giQXQZ/[\\\!!!A!...q+++  &/11%%%	8MX\Xkuy  EJ  K  K  K!QwyQQQ  '022  111 Z	@T\s  ~B  ~T  U  U  UqggiHHH
D,BCCC &/11///Jyt?RZq{  |Q  R  R  RaWWYGGGz4+@AAA %,$5$7$7$+$5$7$7
$+$5$7$7$+$5$7$7$+$5$7$7$+$5$7$7$+$5$7$7!$+$5$7$7 	1 !YyIYZZZqgwy')>TUUU	)-00055QGT[T]5^^^ &/11///Jyt?RZq{  |Q  R  R  RaWWYGGGz4+@AAA %.00}---:id>PXoy}  zN  O  O  OQGGIFFFj$*>??? 	1 9YbtzRRRQGWY	<RSSS	)+...331'RYR[3\\\  '022  111 Z	@T\s  ~B  ~T  U  U  UqggiHHH
D,BCCC &/11///Jyt?RZq{  |Q  R  R  RaWWYGGGz4+@AAA 	1 "i	$-XXX  w	79?U VVV	),///44A7SZS\4]]] #*"3"5"5##$7888 #
94CZby  DH  D]  !^  !^  !^""!"KKK"":t/HIII ")!2!4!4""#5666"z)$BX`w  BF  BZ   [   [   [!!	!JJJ!!*d.FGGG 	1 "-	BGGGA7GIwy;QRRR	)'***//qggi/XXX 	1 F###	)+...331'RYR[3\\\c#j#j#j#j#jkkk #	)2DO \ \ \""!')WYAW"XXX 	1 #<	AFFFQG79V]V_ahajlsluJvwww$'M)GDT^b^n^t$u$u$u!!&&aWgiQXQZE[&\\\-1-F-J)* 	1"%)IRdN`"a"a"a$$A7qRYR[]d]fQg$hhh Z	
Jakok|}}}qggiHHH
D,=>>>rw||BIKK9KLLMMM 	1149B]a]v1w1w1w..331'VWahajlslu`v3www$'Jy?PXoy}  zR  %S  %S  %S!!&&aWWY&OOO!&&z43KLLL!%%bgll29;;@Y&Z&Z[[[ 	1IiTM]^^^	aWGIwyCYZZZ --// 
	5 
	5E111$$!!$4444$***$$&q$9999)##$$!&$9999 $$!!$4444 		Z777|DI&&	d###<%%:t7M[_klmmm9d6KY]ijkkk:t7M[_klmmm#4d>WeiuwxxxvHBBB,t$$)T5JX\hijjj(D4HVZfghhh)T5JX\hijjj"2D<Tbfrtuuuu7a@@@<%%#9C~C~  KL  	M  	M  	MvHBBB	64#9:::	64#8999	64#9:::	64#<===	64#8999	64#7888	64#8999	64#;<<< 		E5)))  """#'9??38W#X#X  		Z...	 		 		t7888	I 	 	 	DD	s   HAH0 H0AIIAIN)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r   r   '  s       9 9 9xC C C/ / /21 1 128 8 821 1 1@- - -8/ / /86 6 68/ / /<a a a	8 	8 	8
R 
R 
R` ` ` v v v v vr   r   c                  "    t                       dS )a  
    Launch the MouseInfo application in a new window.

    This exists as a shortcut instead of running MouseInfoWindow() because
    PyAutoGUI (which imports mouseinfo) is set up with a simple mouseInfo()
    function and I'd like to keep this consistent with that.
    N)r   r   r   r   	mouseInfor  z  s     r   __main__r   )h__doc__r@  r   r   rR   r   r<  r   r   r   r   r   r   r   r	   r
   r   rK   rN   PILr   r   r(   r   r   r   SetProcessDPIAwareAttributeErrorGetDCr4   	Structurer   r#   r   r+   r_   r/   r   r9   r   rubicon.objcr;   r<   rubicon.objc.typesr=   LoadLibraryfind_libraryappkitr?   declare_class_propertyrD   CGDirectDisplayID
CGEventRefCGEventSourceRefCGEventTapLocationCGEventTypeCGEventField	CGKeyCodeCGMouseButtonCGScrollEventUnitrX   argtypesrestypeCGEventCreateKeyboardEventCGEventCreateMouseEventCGEventCreateScrollWheelEventCGEventSetIntegerValueFieldCGEventSetTypeargtypeCGEventPostrY   rG   rV   rZ   rc   r   Xlib.displayrf   errnorw   PopenPIPE	whichProcwaitOSErrorexENOENTenvironro   ru   rz   r~   r   version_infor   Tkinterr   r   r   exitrM  r   r  r   r   r   r   <module>r     s  
 
  / / / / / / / / / / / / / / / / / / / /                                  <7MMM "!!!!!!}..0000    
		#	#A	&	&B* * * * *  * * *$ $ $ H	 	 	 	  Jd d dD" " " HH 	\X////////>>>>>> T/d/99::Fi	""G""?333
 %D$%6T%6~%F%FGGM J 0*=== 68HIII!KLIM  3D1DM%.08M%- :J9V\8]M,57AM,4 7GU\^k5lM)24>M)1 =MN_aikr;sM/8:DM/7 ;ElT[9\M-68<M-5 -7+DM (+/M ( +=j)IM&(,M% .0M!*,=M!)M M M H     J
 
 

 D5 5 5 HH X_'!!$$$$$$LLLK
(
('":?:?T T TI#..**a/KK   8u|##  DDDD	 wrz),--H0 0 0 HQ Q Q Q* "JU U UD5 5 5 H #A&!+ 8? Q	O%%%%C%%%%%%% 	O 	O 	OCH  N  O  O  O  O  O	O	QNNN######%%%%%%% 	Q 	Q 	QCH  P  Q  Q  Q  Q  Q	Q  "!!!!!!!!!!! 	!!!!!! Q	 Q	 Q	 Q	 Q	 Q	 Q	 Q	f   zO s_   A A
A&B BB7J: :K?KK0L= =MMM* *NN