
    iЧ                        S r SrSSKrSSKrSSKrSSKrSSKrSSKJrJ	r	J
r
JrJrJrJrJrJr  SSKrSSKr SSKJr  Sr\R
                  S:X  a  SSKr\(       a  SS	KJr   \R0                  R2                  R5                  5         \R0                  R2                  R9                  S5      r " S
 S\R<                  5      rS r \ r!S1S jr"\"r#S r$\$r%S r&\&r'GOb\R
                  S:X  Ga  SSK(J)r)J*r*  SSK+J,r,  \RZ                  " \R\                  " S5      5      r/\)" S5      r0\0Rc                  S5        \RZ                  " \R\                  " S5      5      r2\r3\r4\," S\45        \r5\," S\55        \r6\r7\r8\r9\r:\r;\3/\2Rx                  l=        \\2Rx                  l>        \5\9\/\2R~                  l=        \4\2R~                  l>        \5\7\*\:/\2R                  l=        \4\2R                  l>        \5\;\\	/\2R                  l=        \4\2R                  l>        \4\8\
/\2R                  l=        S\2R                  l>        \4\7/\2R                  lD        S\2R                  l>        \6\4/\2R                  l=        S\2R                  l>        / \2R                  l=        \3\2R                  l>        S rG\Gr!S1S jrH\Hr#S rI\Ir%S rJ\Jr'O\R                  " 5       S:X  as  SSKLJMrM  SSKNrNSrO \R                  " SS /\R                  \R                  S!9rR\RR                  5       S:H  rO\M" \R                  S"   5      rXS# rY\Yr!S1S$ jrZ\Zr#S% r[\[r%S& r\\\r'\R                  S   S':H  r^\R                  " 5       S:X  a'  \^(       a   SSK_r`\`raSS(K_Jbrb  O6 SSK`r`SS*K`Jara  SS(K`Jbrb  O$\^(       a  SSK_r`\`raSS(K_Jbrb  OSSK`r`SS*K`Jara  SS(K`Jbrb  S,rd " S- S.5      reS/ rf\gS0:X  a  \e" 5         gg! \ a    Sr GNf = f! \ a     GN\f = f! \T a%  rU\UR                  \NR                  :X  a   SrUCUNe SrUCUff = f! \ a    \R                  " S)5         Nf = f! \ a    \R                  " S+5         Nf = f)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                   L    \ rS rSrS\R
                  4S\R
                  4/rSrg)POINT<   xy N)__name__
__module____qualname____firstlineno__ctypesc_long_fields___static_attributes__r       ?C:\des-py\RoboSAPF\venv\Lib\site-packages\mouseinfo/__init__.pyr   r   <   s!    &--(&--(*r   r   c                      [        5       n [        R                  R                  R	                  [        R
                  " U 5      5        U R                  U R                  4$ N)r   r   windlluser32GetCursorPosbyrefr   r   )cursors    r   _winPositionr&   @   s=    ))&,,v*>?&((##r   c                      [         R                  " 5       nU b  UR                  U 5        U$ ! [         a    [	        S5      ef = f)NzGPillow module must be installed to use screenshot functions on Windows.)r   grabsave	NameErrorImportError)filenameims     r   _winScreenshotr.   G   sL    	i!B#! 	  	ighh	is	   )- Ac                      [         R                  R                  R                  S5      [         R                  R                  R                  S5      4$ )Nr      )r   r!   r"   GetSystemMetricsr   r   r   _winSizer2   S   s8    $$55a8&--:N:N:_:_`a:bccr   c                     [         R                  R                  R                  [        X5      nUS-  nUS-  nUS-  nUS-  nUnX4U4$ )N   )r   r!   gdi32GetPixeldc)r   r   colorRefredgreenblues         r   _winGetPixelr<   W   sT    ==&&//A9nS3SD!!r   darwin)	ObjCClassCGPoint)register_preferred_encodingAppKitNSEventmouseLocationCoreGraphicss   ^{__CGEvent=}s   ^{__CGEventSource=}c                      [         R                  n [        U R                  5      [        [        R                  S5      U R                  -
  5      4$ )Nr   )rB   rC   intr   core_graphicsCGDisplayPixelsHighr   )locs    r   _macPositionrJ      s9    ##355z3}@@CceeKLLLr   c                 "   U b  U nO0S[         R                   R                  5       R                  S5      -  n[        R                  " SSU/5        [
        R                  " U5      nUR                  5         U c  [        R                  " U5        U$ )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   _macScreenshotrY      su    "K,0A0A0E0E0G0P0PQf0ghK$<=ZZ$ 		IIk"	r   c                      [         R                  [         R                  5       5      [         R                  [         R                  5       5      4$ r    )rG   CGDisplayPixelsWideCGMainDisplayIDrH   r   r   r   _macSizer]      s:    --m.K.K.MN--m.K.K.MN
 	
r   c                 R    [        5       R                  X45      nUS   US   US   4$ Nr   r0      
screenshotgetpixelr   r   rgbValues      r   _macGetPixelrf      /    <((!0{HQK!44r   Linux)Displaywhichscrot)stdoutstderrDISPLAYc                      [         R                  5       R                  R                  5       R                  n U S   U S   4$ )Nroot_xroot_y)_displayscreenrootquery_pointer_data)coords    r   _linuxPositionrx      s6    !&&446<<Xh//r   c                 z   [         (       d  [        S5      eU b  U nO0S[        R                  R                  5       R	                  S5      -  n[         (       aZ  [
        R                  " SSU/5        [        R                  " U5      nUR                  5         U c  [        R                  " U5        U$ [        S5      e)Nz_"scrot" must be installed to use screenshot functions in Linux. Run: sudo apt-get install scrotz.screenshot%s.pngrL   rk   z-zzqThe scrot program must be installed to take a screenshot with PyScreeze on Linux. Run: sudo apt-get install scrot)scrotExistsNotImplementedErrorrN   rO   rP   rQ   rR   r   rS   rT   rU   rV   	ExceptionrW   s      r   _linuxScreenshotr}      s    {%  'H  I  I"K-1B1B1F1F1H1Q1QRg1hiK;OOWdK89K(B GGI		+&I  P  Q  Qr   c                  z    [         R                  5       R                  [         R                  5       R                  4$ r    )rr   rs   width_in_pixelsheight_in_pixelsr   r   r   
_linuxSizer      s'     00(//2C2T2TTTr   c                 R    [        5       R                  X45      nUS   US   US   4$ r_   ra   rd   s      r   _linuxGetPixelr     rg   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                   n    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)MouseInfoWindowi'  c                    [        5       u  pU R                  R                  XR                  -
  < SX R                  -
  < 35        [        5       u  p4[        (       d  U R                  R                  S5        O[        R                  S:X  a  U R                  R                  S5        OoSUs=::  a  U:  a  O  OSUs=::  a  U:  d  O  U R                  R                  S5        O4[        X5      u  pVnU R                  R                  U< SU< SU< 35        [        (       d  U R                  R                  S5        GO[        R                  S:X  a  U R                  R                  S5        OSUs=::  a  U:  a  O  OSUs=::  a  U:  d  O  U R                  R                  S5        O[        W5      SS  R                  5       R                  SS5      n[        W5      SS  R                  5       R                  SS5      n	[        W5      SS  R                  5       R                  SS5      n
S	U< U	< U
< 3nU R                  R                  U5        [        (       a3  [        R                  S:X  d  SUs=::  a  U:  a  O  OSUs=::  a  U:  d  O  U R                  R!                  S
S9  OU R                  R!                  WS9  U R"                  (       a,  U R$                  R'                  SU R(                  5      U l        g g )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	isRunningrt   after_updateMouseInfoTextFields_updateMouseInfoJob)selfr   r   widthheightrgbrHexgHexbHexhexColors               r   r   *MouseInfoWindow._updateMouseInfoTextFields(  s,    zLL(8!ll:JKL
   JJNN23\\X%JJNN=)q.5.Q!_f_JJNN67 qnGA!JJNNAq12  MM56\\X%MMm,q.5.Q!_f_MM9: q6!":##%++As3Dq6!":##%++As3Dq6!":##%++As3D$($5HMMh'!!s||x'?!q.SX.]^bc]lfl]lOO%%%9 OO%%%: >>'+yysD<[<['\D$r   c                 p    [         R                  " U5        U R                  R                  SU-   5        g ! [         R                   aj  n[
        R                  " 5       S:X  a   U R                  R                  S5         S nAg U R                  R                  S[        U5      -   5         S nAg S nAff = f)NzCopied rh   z-Copy failed. Run "sudo apt-get install xsel".zClipboard error: )	pyperclipcopystatusbarSVr   PyperclipExceptionr   systemstr)r   
textToCopyes      r   	_copyTextMouseInfoWindow._copyTextd  s    	CNN:&  Z!78++ 	C G+  $$%TUU  $$%83q6%ABB		Cs   47 B54B0'B00B5c                 *   [        U5      S:  a  [        US   [        5      (       a  SnU R                  R	                  5       S:X  aR  [        U5      S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S	5        g U R                  U R                  R	                  5       5        U R                  R                  S
5        g )Nr   r   on  r`   	Copy in 3r0   	Copy in 2	Copy in 1Copy XY)len
isinstancer   delayEnabledSVgetrt   r   _copyXyMouseInfoxyCopyButtonSVr   r   r   r   argss     r   r    MouseInfoWindow._copyXyMouseInfoo  s*    t9q=ZQ77D""$,TaIIOOD$"7"7;##K0Y!^Q1IIOOD$"7"7;##K0Y!^Q1IIOOD$"7"7;##K0 NN4++//12##I.r   c                 *   [        U5      S:  a  [        US   [        5      (       a  SnU R                  R	                  5       S:X  aR  [        U5      S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S	5        g U R                  U R                  R	                  5       5        U R                  R                  S
5        g )Nr   r   r   r   r`   r   r0   r   r   Copy RGB)r   r   r   r   r   rt   r   _copyRgbMouseInforgbCopyButtonSVr   r   r   r   s     r   r   !MouseInfoWindow._copyRgbMouseInfo  s&    t9q=ZQ77D""$,TaIIOOD$"8"8!<  $$[1Y!^Q1IIOOD$"8"8!<  $$[1Y!^Q1IIOOD$"8"8!<  $$[1 NN4::>>+,  $$Z0r   c                 *   [        U5      S:  a  [        US   [        5      (       a  SnU R                  R	                  5       S:X  aR  [        U5      S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S	5        g U R                  U R                  R	                  5       5        U R                  R                  S
5        g )Nr   r   r   r   r`   r   r0   r   r   zCopy RGB Hex)r   r   r   r   r   rt   r   _copyRgbHexMouseInforgbHexCopyButtonSVr   r   r   r   s     r   r   $MouseInfoWindow._copyRgbHexMouseInfo  s(    t9q=ZQ77D""$,TaIIOOD$";";Q?##''4Y!^Q1IIOOD$";";Q?##''4Y!^Q1IIOOD$";";Q?##''4 NN4==,,./##''7r   c                 N   U R                   R                  5       < SU R                  R                  5       < SU R                  R                  5       < 3n[	        U5      S:  a  [        US   [        5      (       a  SnU R                  R                  5       S:X  aR  [	        U5      S:X  aC  U R                  R                  SU R                  S5        U R                  R                  S5        g [	        U5      S:X  aL  US   S:X  aC  U R                  R                  SU R                  S5        U R                  R                  S	5        g [	        U5      S:X  aL  US   S:X  aC  U R                  R                  SU R                  S5        U R                  R                  S
5        g U R                   R                  5       < SU R                  R                  5       < SU R                  R                  5       < 3nU R                  U5        U R                  R                  S5        g )N r   r   r   r   r`   r   r0   r   r   Copy All)r   r   r   r   r   r   r   r   rt   r   _copyAllMouseInfoallCopyButtonSVr   r   )r   r   textFieldContentss      r   r   !MouseInfoWindow._copyAllMouseInfo  s    +/*:*:*>*>*@*.**..*:*.--*;*;*=?
 t9q=ZQ77D""$,TaIIOOD$"8"8!<  $$[1Y!^Q1IIOOD$"8"8!<  $$[1Y!^Q1IIOOD$"8"8!<  $$[1 /3.>.>.B.B.D.2jjnn.>.2mm.?.?.A!C NN,-  $$Z0r   c                    [        U5      S:  a  [        US   [        5      (       a  SnU R                  R	                  5       S:X  aR  [        U5      S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S	5        g U R                  R	                  S
S5      SU R                  R	                  5       -  -   nU R                  R                  U5        U R                  U5        U R                  R                  SU R                  R	                  5       -   5        U R                  R                  S5        g )Nr   r   r   r   r`   Log in 3r0   Log in 2Log in 11.0end-1c%s
Logged Log XY)r   r   r   r   r   rt   r   _logXyMouseInfoxyLogButtonSVr   logTextarear   logTextboxSV_setLogTextAreaContentsr   r   r   logContentss      r   r   MouseInfoWindow._logXyMouseInfo  s    t9q=ZQ77D""$,TaIIOOD$"6"6:"":.Y!^Q1IIOOD$"6"6:"":.Y!^Q1IIOOD$"6"6:"":. **..uh?&DL\L\L`L`LbBccK!!+.((5  T-=-=-A-A-C!CD""8,r   c                    [        U5      S:  a  [        US   [        5      (       a  SnU R                  R	                  5       S:X  aR  [        U5      S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S	5        g U R                  R	                  S
S5      SU R                  R	                  5       -  -   nU R                  R                  U5        U R                  U5        U R                  R                  SU R                  R	                  5       -   5        U R                  R                  S5        g )Nr   r   r   r   r`   r   r0   r   r   r   r   r   r   Log RGB)r   r   r   r   r   rt   r   _logRgbMouseInforgbLogButtonSVr   r   r   r   r   r   r   s      r   r    MouseInfoWindow._logRgbMouseInfo  s    t9q=ZQ77D""$,TaIIOOD$"7"7;##J/Y!^Q1IIOOD$"7"7;##J/Y!^Q1IIOOD$"7"7;##J/ **..uh?&DJJNNL\B]]K!!+.((5  TZZ^^-=!=>##I.r   c                    [        U5      S:  a  [        US   [        5      (       a  SnU R                  R	                  5       S:X  aR  [        U5      S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S	5        g U R                  R	                  S
S5      SU R                  R	                  5       -  -   nU R                  R                  U5        U R                  U5        U R                  R                  SU R                  R	                  5       -   5        U R                  R                  S5        g )Nr   r   r   r   r`   r   r0   r   r   r   r   r   r   zLog RGB Hex)r   r   r   r   r   rt   r   _logRgbHexMouseInforgbHexLogButtonSVr   r   r   r   r   r   r   s      r   r   #MouseInfoWindow._logRgbHexMouseInfo  s    t9q=ZQ77D""$,TaIIOOD$":":A>""&&z2Y!^Q1IIOOD$":":A>""&&z2Y!^Q1IIOOD$":":A>""&&z2 **..uh?&DMML]L]L_B``K!!+.((5  T]]->->-@!@A""&&}5r   c                 Z   [        U5      S:  a  [        US   [        5      (       a  SnU R                  R	                  5       S:X  aR  [        U5      S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S5        g [        U5      S:X  aL  US   S:X  aC  U R
                  R                  SU R                  S5        U R                  R                  S	5        g U R                  R	                  5       < S
U R                  R	                  5       < S
U R                  R	                  5       < 3nU R                  R	                  SS5      SU-  -   nU R                  R                  U5        U R                  U5        U R                   R                  SU-   5        U R                  R                  S5        g )Nr   r   r   r   r`   r   r0   r   r   r   r   r   r   r   Log All)r   r   r   r   r   rt   r   _logAllMouseInfoallLogButtonSVr   r   r   r   r   r   r   r   )r   r   r   r   s       r   r    MouseInfoWindow._logAllMouseInfo.  s    t9q=ZQ77D""$,TaIIOOD$"7"7;##J/Y!^Q1IIOOD$"7"7;##J/Y!^Q1IIOOD$"7"7;##J/ /3.>.>.B.B.D.2jjnn.>.2mm.?.?.A!C **..uh?&L]B^^K!!+.((5  ->!>?##I.r   c                    UR                  5       n[        UR                  S5      5      S:w  a  g UR                  S5      u  p4UR                  5       nUR                  5       nUR	                  5       (       a  UR	                  5       (       d  g [        U5      U l        [        U5      U l        U R                  R                  S[        U R                  5      -   S-   [        U R                  5      -   5        g )Nr   r`   zSet XY Origin to z, )r   r   splitstrip	isdecimalrF   r   r   r   r   r   )r   svcontentsr   r   s        r   _xyOriginChanged MouseInfoWindow._xyOriginChangedL  s    668x~~c"#q(~~c"GGIGGI{{}}AKKMM1v1v03t||3DDtKcRVR^R^N__`r   c                    [         (       aU  U R                  R                  S[        R                  5        U R                  R                  [        R                  U5        O+U R                  R                  S[        R                  U5        U R                  R                  5       u  p#U R                  R                  U5        g )Nr   )	RUNNING_PYTHON_2r   deletetkinterENDinsertreplaceyviewyview_moveto)r   r   topOfTextAreabottomOfTextAreas       r   r   'MouseInfoWindow._setLogTextAreaContentsY  s    ##E7;;7##GKK=$$UGKKE +/*:*:*@*@*B'%%&67r   c                     [        U R                  R                  5       S5       nUR                  U R                  R                  5       5        S S S 5        U R
                  R                  SU R                  R                  5       -   5        g ! , (       d  f       NE= f! [         a1  nU R
                  R                  S[        U5      -   5         S nAg S nAff = f)NwzLog file saved to ERROR: )	rS   logFilenameSVr   writer   r   r   r|   r   )r   r   for   s       r   _saveLogFileMouseInfoWindow._saveLogFilee  s    	Rd((,,.4**..01 5
   !58J8J8N8N8P!PQ 54 	5  SV!344	5s.   $B  *BB  
BB   
C*'CCc                    [         (       d  U R                  R                  S5        g  [        U R                  R                  5       5        U R                  R                  SU R                  R                  5       -   5        g ! [         a1  nU R                  R                  S[        U5      -   5         S nAg S nAff = f)NzERROR: NA_Pillow_unsupportedzScreenshot file saved to r  )r   r   r   rb   screenshotFilenameSVr   r|   r   )r   r   r   s      r   _saveScreenshotFile#MouseInfoWindow._saveScreenshotFiler  s     !   !?@	`t004467   !<t?X?X?\?\?^!^_  	5  SV!344	5s   #B 
B>'B99B>c           	      :'  ^  ST l         [        R                  " 5       T l        T R                  R	                  S[
        -   5        T R                  R                  SS5        [        (       a!  [        R                  " T R                  5      nO[        R                  " T R                  SS9nUR                  SS[        R                  [        R                  [        R                  [        R                  4S9  UR                  SS	S
9  UR!                  SS	S
9  S	n[        R"                  " 5       T l        T R$                  R'                  S5        [        R(                  " UST R$                  SSS9nUR                  S	US[        R                  S9  [        R"                  " 5       T l        T R*                  R'                  S5        [        R,                  " UT R*                  [.        T R0                  S9T l        T R2                  R                  SU[        R                  S9  T R2                  R5                  ST R0                  5        [        R"                  " 5       T l        T R6                  R'                  S5        [        R,                  " UT R6                  [.        T R8                  S9T l        T R:                  R                  SU[        R                  S9  T R:                  R5                  ST R8                  5        [        R"                  " 5       T l        [        R"                  " 5       T l        [        R"                  " 5       T l         [        R"                  " 5       T l!        [        R"                  " 5       T l"        [        R"                  " 5       T l#        [        R"                  " 5       T l$        [        R"                  " 5       T l%        US	-  n[        RL                  " UST R<                  S9T l'        T RN                  R                  SU[        R                  [        R                  4S9  [        RP                  " USS9R                  S	U[        R                  S9  [        R"                  " 5       T l)        T RR                  R'                  S5        [        R,                  " UT RR                  [.        T RT                  S9T l+        T RV                  R                  SU[        R                  S9  T RV                  R5                  ST RT                  5        [        R"                  " 5       T l,        T RX                  R'                  S5        [        R,                  " UT RX                  [.        T RZ                  S9T l.        T R\                  R                  SU[        R                  S9  T R\                  R5                  ST RZ                  5        US	-  n[        RL                  " UST R>                  S9T l/        T R^                  R                  SU[        R                  [        R                  4S9  [        RP                  " USS9R                  S	U[        R                  S9  [        R"                  " 5       T l0        T R`                  R'                  S5        [        R,                  " UT R`                  [.        T Rb                  S9T l2        T Rd                  R                  SU[        R                  S9  T Rd                  R5                  ST Rb                  5        [        R"                  " 5       T l3        T Rf                  R'                  S5        [        R,                  " UT Rf                  [.        T Rh                  S9T l5        T Rj                  R                  SU[        R                  S9  T Rj                  R5                  ST Rh                  5        US	-  n[        RL                  " UST R@                  S9T l6        T Rl                  R                  SU[        R                  [        R                  4S9  [        RP                  " US S9R                  S	U[        R                  S9  [        R"                  " 5       T l7        T Rn                  R'                  S!5        [        R,                  " UT Rn                  [.        T Rp                  S9T l9        T Rr                  R                  SU[        R                  S9  T Rr                  R5                  ST Rp                  5        [        R"                  " 5       T l:        T Rt                  R'                  S"5        [        R,                  " UT Rt                  [.        T Rv                  S9T l<        T Rx                  R                  SU[        R                  S9  T Rx                  R5                  ST Rv                  5        US	-  n[        R                  " US#S#S$9T l=        T Rz                  R                  SU[        R                  [        R                  4S9  [        RP                  " US%S9R                  S	U[        R                  S9  US	-  nST l>        ST l?        T RB                  R'                  S&5        [        RP                  " US'S9R                  S	U[        R                  S9  T RB                  R                  S(T RB                  4U 4S) jj5        [        RL                  " UST RB                  S9T lA        T R                  R                  SU[        R                  [        R                  4S9  US	-  n[        R                  " US*S+S$9T lC        T R                  R                  S	US[        R                  [        R                  [        R                  [        R                  4S9  [        R                  " U[        R                  T R                  R                  S,9T lG        T R                  R                  S-U[        R                  [        R                  4S9  T R                  R&                  T R                  S.'   US	-  n[        RL                  " UST RF                  S9T lH        T R                  R                  S	US[        R                  [        R                  4S9  [        R,                  " US/[.        T R                  S09T lJ        T R                  R                  SU[        R                  S9  T R                  R5                  ST R                  5        T RF                  R'                  [        R                  R                  [        R                  " 5       S15      5        US	-  n[        RL                  " UST RH                  S9nUR                  S	US[        R                  [        R                  4S9  [        R,                  " US2[.        T R                  S09T lP        T R                  R                  SU[        R                  S9  T R                  R5                  ST R                  5        T RH                  R'                  [        R                  R                  [        R                  " 5       S35      5        US	-  n[        RP                  " U[        R                  T RJ                  S49nUR                  S	US-[        R                  [        R                  4S9  UR                  5        Hn  nUT R                  :X  a  UR                  SSS59  M%  UT R                  :X  a  UR                  S6SS59  MG  Xe:X  a  UR                  SS6S59  M^  UR                  SSS59  Mp     T R                  R                  S7[        R                  5        [        R                  " T R                  5      nT R                  R                  US89  [        R                  " U5      nUR                  S9T R0                  S:S-S;9  UR                  S<T RT                  S=S-S;9  UR                  S>T Rb                  S?S-S;9  UR                  S@T Rp                  SASBS;9  UR                  SCUSSD9  [        R                  " U5      n	U	R                  SET R8                  SFSS;9  U	R                  SGT RZ                  SHSS;9  U	R                  SIT Rh                  SJSS;9  U	R                  SKT Rv                  SLSMS;9  UR                  SNU	SSD9  [        R                  " U5      n
U
R                  SOSP S+SQ9  UR                  SRU
SSD9  T R                  R                  SST R0                  5        T R                  R                  STT RT                  5        T R                  R                  SUT Rb                  5        T R                  R                  SVT Rp                  5        T R                  R                  SWT R8                  5        T R                  R                  SXT RZ                  5        T R                  R                  SYT Rh                  5        T R                  R                  SZT Rv                  5        T R                  R                  S[S[5        T RN                  R                  5         T R                  R                  ST R                  5      T l_        T R                  R                  S\S5        T R                  R                  5         T R                  R                  5         T R                  R                  T R                  5        S[T l          T R                  R                  5         g]! [        R                   a     g]f = f)^zwLaunches 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stickyr0   )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                 &   > TR                  U5      $ r    )r  )nameindexmoder  r   s       r   <lambda>*MouseInfoWindow.__init__.<locals>.<lambda>  s    QUQfQfgiQjr         )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=  rA  r   F5r   F6r   F7zLog RGB as HexF8   LogzOnline Documentationc                  .    [         R                  " S5      $ )Nz https://mouseinfo.readthedocs.io)
webbrowserrS   r   r   r   r3  r4  V  s    :??[}K~r   )r?  r*  rA  Helpz<F1>z<F2>z<F3>z<F4>z<F5>z<F6>z<F7>z<F8>Fz-topmostN)fr   r  Tkrt   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  saveLogButtonrU   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__MouseInfoWindow.__init__  s     JJL			{23		#s# dii0I		$))[AI 	aQ		799giiQXQZQZ/[\!!!A!.q+  &//1%	8MX\XkXkuy  EJ  K!QwyyQ  '002  1 ZZ	@T@T\s  ~B  ~T  ~T  UqggiiH
D,B,BC &//1/JJyt?R?RZq{  |Q  |Q  RaWWYYGz4+@+@A %,$5$5$7$+$5$5$7
$+$5$5$7$+$5$5$7$+$5$5$7$+$5$5$7$+$5$5$7!$+$5$5$7 	1 !YYyIYIYZqgwyy'))>TU		)-055QGT[T]T]5^ &//1/JJyt?R?RZq{  |Q  |Q  RaWWYYGz4+@+@A %..0}-::id>P>PXoy}  zN  zN  OQGGIIFj$*>*>? 	1 99YbtzzRQGWYY		<RS		)+.331'RYR[R[3\  '002  1 ZZ	@T@T\s  ~B  ~T  ~T  UqggiiH
D,B,BC &//1/JJyt?R?RZq{  |Q  |Q  RaWWYYGz4+@+@A 	1 "ii	$--X  w		799?U V		),/44A7SZS\S\4] #*"3"3"5##$78 #

94CZCZby  DH  D]  D]  !^""!"K"":t/H/HI ")!2!2!4""#56"zz)$BXBX`w  BF  BZ  BZ   [!!		!J!!*d.F.FG 	1 "--	BGA7GIIwyy;QR		)'*//qggii/X 	1 F#		)+.331'RYR[R[3\c#jk #		)2DOO \""!'))WYYAW"X 	1 #<<	AFQG799V]V_V_ahajajlsluluJvw$'MM)GDTDT^b^n^n^t^t$u!!!&&aWgiiQXQZQZE[&\-1-F-F-J-J)* 	1"%))IRdN`N`"a$$A7qRYR[R[]d]f]fQg$h ZZ	
Jakok|k|}qggiiH
D,=,=>rww||BIIK9KLM 	1149B]a]v]v1w..331'VWahajajlslulu`v3w$'JJy?PXoy}  zR  zR  %S!!!&&aWWYY&O!!&&z43K3KL!!%%bggll299;@Y&Z[ 	1IIiTM]M]^	aWGIIwyyCYZ --/E111$$!!$4$***$$&q$9#$$!&$9 $$!!$4 0 			Z7||DII&		d#<<%:t7M7M[_klm9d6K6KY]ijk:t7M7M[_klm#4d>W>WeiuwxvHB,,t$)T5J5JX\hij(D4H4HVZfgh)T5J5JX\hij"2D<T<Tbfrtuu7a@<<%#9C~  KL  	MvHB		64#9#9:		64#8#89		64#9#9:		64#<#<=		64#8#89		64#7#78		64#8#89		64#;#;< 			E5)  "#'99??38W8W#X  			Z.		 			 			t778	II 		s   M(AN NANNAN)(r   r`  r   rb  r   r   r   r   r  ru  r   rt  r   rj  r   rm  r   rn  r   r   rl  rk  r   r   ri  rt   rv  rz  r  r   r   rg  r   re  rh  r   rc  rp  r   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r  r  r  r   r   r   r   r   r   '  sT    9xC/212821@-8/868/<a	8
R` vr   r   c                      [        5         g)z
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__rR  r   r   rU   r   rN  r   r   r   r   r   r   r   r	   r
   r   rN   rQ   PILr   r   r+   r   r!   r"   SetProcessDPIAwareAttributeErrorGetDCr7   	Structurer   r&   r   r.   rb   r2   r   r<   r   rubicon.objcr>   r?   rubicon.objc.typesr@   LoadLibraryfind_libraryappkitrB   declare_class_propertyrG   CGDirectDisplayID
CGEventRefCGEventSourceRefCGEventTapLocationCGEventTypeCGEventField	CGKeyCodeCGMouseButtonCGScrollEventUnitr[   argtypesrestypeCGEventCreateKeyboardEventCGEventCreateMouseEventCGEventCreateScrollWheelEventCGEventSetIntegerValueFieldCGEventSetTypeargtypeCGEventPostr\   rJ   rY   r]   rf   r   Xlib.displayri   errnorz   PopenPIPE	whichProcwaitOSErrorexENOENTenvironrr   rx   r}   r   r   version_infor  Tkinterr  r   r   exitr_  r   r  r   r   r   r   <module>r     s  
  / / /     <<7!}}..0 
			#	#A	&B*   *$ H	  JdD" H 	\\X/> d//9:F	"G""?3
 $$T%6%6~%FGM J 0*= 68H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 H  J

 D5 H __'!$K
"(('":??:??TI#..*a/K rzz),-H0 HQ* "JUD5 H ##A&!+ ??	O%C%
	Q#%
 !! 	! Q	 Q	f z s    @  88u||# p  	OHH  N  O	O  	QHH  P  Q	Qse   O
 "$O ;O& )P 7P2 
OOO#"O#&P,PPPP/.P/2QQ