
    r@;jq:                    J   d Z ddlm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	 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 ddlmZ ddlmZ dd
ZddZd Z G d dej                  Z G d de          ZddZdZdZdZ G d dej                   Z!ddZ"d Z#d Z$ddZ%d Z&dS )z@The PythonWin application code. Manages most aspects of MDI, etc    )annotationsN)Literal)afxresdialogwindow)WinApp   )scriptutils c                    |\  }}}}|r|dz  }t          j        | |dz   |           t          j        | |dz   |           t          j        | |dz   |           t          j        | |dz   |           dS )zWrites a rectangle to an INI file
    Args: section = section name in the applications INI file
          rect = a rectangle in a (cy, cx, y, x) tuple
                 (same format as CREATESTRUCT position tuples). lefttoprightbottomN)win32uiWriteProfileVal)sectionrectstater   r   r   r   s          kC:\Users\Administrator\AppData\Local\Temp\2\pip-target-b0z114gj\lib\python\pythonwin/pywin/framework/app.pySaveWindowSizer      s    
  $D#uf GUV^T:::GUU]C888GUW_e<<<GUX%5v>>>>>    c                    |r|dz  }t          j        | |dz   d          }t          j        | |dz   d          }t          j        | |dz   d          }t          j        | |dz   d          }||||fS )zTLoads a section from an INI file, and returns a rect in a tuple (see SaveWindowSize)r   r   r   r   r   r   )r   GetProfileVal)r   r   r   r   r   r   s         r   LoadWindowSizer   )   s      %&.!<<D


:
:C!'57?A>>E"7EH,<a@@F#uf%%r   c                b    | d         | d         z
  | d         | d         z
  | d         | d         fS )N   r	      r    )r   s    r   RectToCreateStructRectr!   4   s3    Gd1gtAwa0$q'47CCr   c                  ~    e Zd ZdZej        ej        ej        ej        e	j
        e	j        fZd
dZd Zd Zd Zd Zd	S )	MainFramezMain WindowreturnLiteral[-1, 0, 1]c                .    |                                   dS Nr   )_CreateStatusBar)selfcss     r   OnCreatezMainFrame.OnCreateF   s    qr   c                
   t          j        |           | _        | j                            | j                   |                     | j        t           j                   |                     | j        t           j                   d S N)	r   CreateStatusBar	statusBarSetIndicatorsstatusBarIndicatorsHookCommandUpdateOnUpdatePosIndicatorID_INDICATOR_LINENUMID_INDICATOR_COLNUMr)   s    r   r(   zMainFrame._CreateStatusBarJ   sk     066$$T%=>>>t8':VWWWt8':UVVVVVr   c                   t          j                    }d}|	 |                                \  }}|                    |          }||                    |          z
  }|j        t          j        k    rdd|dz   fz  }n
dd|dz   fz  }n# t          j        $ r Y nw xY w|	                    |           |
                                 d S )Nz     z%0*d   r	   r   )r
   GetActiveEditControlGetSelLineFromChar	LineIndexm_nIDr   r4   errorSetTextEnable)r)   cmduieditControlvalue	startCharendCharlineNocolNos           r   r3   zMainFrame.OnUpdatePosIndicatorP   s    !688"
%0%7%7%9%9"	7$11)<<+"7"7"?"??;'">>>"a!_4EE"a^3E=   es   A.B BBc           
     &   | j                             |          }t          | j                  }|| _        |d         |d         z
  rJt          |          }|d         |d         |d         |d         ||d         |d         |d         |d         f	}|S )	Nr   r   r	   r   r8            )_obj_PreCreateWindowr   
sectionPos	startRectr!   )r)   ccposr   s       r   rM   zMainFrame.PreCreateWindowb   s    Z''++T_--q6CF? 	N)#..DA1r!ubeT2a5"Q%A1MB	r   c                z    |                                  d         }|| j        k    rt          | j        |           dS )N   r   )GetWindowPlacementrO   r   rN   )r)   msgrectNows      r   	OnDestroyzMainFrame.OnDestroyk   s<    ))++A.dn$$4?G444qr   N)r$   r%   )__name__
__module____qualname__rN   r   ID_SEPARATORID_INDICATOR_CAPSID_INDICATOR_NUMID_INDICATOR_SCRLr   r4   r5   r1   r+   r(   r3   rM   rW   r    r   r   r#   r#   ;   s        J  $#   W W W  $      r   r#   c                      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 Zd Zd Zd Zd ZdS )CAppzA class for the applicationc                n    d | _         t          j        | t          j                               g | _        d S r-   )oldCallbackCallerr   __init__r   GetAppidleHandlersr6   s    r   rc   zCApp.__init__v   s2    !%gn..///r   c                    t                       t          j        ddd          }t          j        |           |                                  |                                  dS )zCalled to crank up the appSettingszRecent File List Size
   N)	HookInputr   r   LoadStdProfileSettingsLoadMainFrameSetApplicationPaths)r)   numMRUs     r   InitInstancezCApp.InitInstance{   s]    &z3JBOO&v...
 	  """""r   c                   t          j        d           	 t          j        | j                   n# t          $ r Y nw xY w| j        r| `d| _        g | _        | j        r| j                            d           d| _        dS )z5Called as the app dies - too late to prevent it here!zApplication shutdown
Nr   )	r   OutputDebugInstallCallbackCallerrb   AttributeErrorframere   rL   AttachObjectr6   s    r   ExitInstancezCApp.ExitInstance   s    4555	)$*@AAAA 	 	 	D	! 	'&
: 	*J##D)))
qs   0 
==c                    || j         v S r-   )re   r)   handlers     r   HaveIdleHandlerzCApp.HaveIdleHandler   s    $+++r   c                :    | j                             |           d S r-   )re   appendrw   s     r   AddIdleHandlerzCApp.AddIdleHandler         )))))r   c                :    | j                             |           d S r-   )re   removerw   s     r   DeleteIdleHandlerzCApp.DeleteIdleHandler   r}   r   c                D   	 d}| j         d d          }|D ]y}	  |||          }ne#  t          d|d           t          j                     t          d           	 |                     |           n# t
          $ r Y nw xY wd}Y nxY w|p|}z|S # t          $ r Y d S w xY w)Nr   zIdle handler z failedzIdle handler removed from list)re   print	traceback	print_excr   
ValueErrorKeyboardInterrupt)r)   countrethandlersrx   thisRets         r   OnIdlezCApp.OnIdle   s    	C(+H# % %
 %ggu55GG <'<<<==='))):;;;..w7777%   GGGnWJ  	 	 	DD	sI   B %B 7BA32B3
B =B?B  BB 
BBc                    t                      S r-   )r#   r6   s    r   CreateMainFramezCApp.CreateMainFrame   s    {{r   c                   |                                  | _        |                     | j                   | j                            t          j        t          j                   | j                                         | j        	                    t	          j
                               | j                                         |                                  dS )z"Create the main applications frameN)r   rs   SetMainFrame	LoadFramer   IDR_MAINFRAMEwin32conWS_OVERLAPPEDWINDOWDragAcceptFiles
ShowWindowGetInitialStateRequestUpdateWindowHookCommandsr6   s    r   rk   zCApp.LoadMainFrame   s    ))++
$*%%%
W2H4PQQQ
""$$$
g<>>???
!!!r   c                   	 |t           j        k    r!t          j        d          }t          j        }n t          j        d          }t          j        }|t          j        d           d S ddlm	} |
                    ||           d S #  t          j                    \  }}}t          j        d| d|            d }Y d S xY w)NzPythonwin ReferencezMain Python Documentationz The help file is not registered!r	   )helpz(Internal error in help file processing
z: )r   ID_HELP_GUI_REFregutilGetRegisteredHelpFiler   HELP_CONTENTSHELP_FINDER
MessageBoxr   r   OpenHelpFilesysexc_info)	r)   idcodehelpFilehelpCmdr   tvtbs	            r   OnHelpzCApp.OnHelp   s    	W,,,"89NOO"0"89TUU"."#EFFFFF""""""!!(G44444	|~~HAq"TATTQRTTUUUBBBBs   A'B	 +B	 	5Cc                .    |D ]}t          |           d S r-   )
__import__)r)   modulesmodules      r   DoLoadModuleszCApp.DoLoadModules   s.      	 	Fv	 	r   c                   | j                             | j        t          j                   |                     | j        t          j                   |                     | j	        t          j
                   |                     | j        t          j                   |                     | j        t          j                   |                     | j        t          j                   |                     | j        t          j                   | j                             t          j                                      | j        t          j                   d S r-   )rs   HookMessageOnDropFilesr   WM_DROPFILESHookCommandHandleOnFileOpenr   ID_FILE_OPENHandleOnFileNewID_FILE_NEW	OnFileMRUID_FILE_MRU_FILE1OnHelpAboutID_APP_ABOUTr   ID_HELP_PYTHONr   	GetWindowGW_CHILDOnRClickWM_RBUTTONDOWNr6   s    r   r   zCApp.HookCommands   s   
t/1FGGG.0DEEE-w/BCCC)BCCC)7+?@@@g&<===g&=>>>
X.//;;M82	
 	
 	
 	
 	
r   c                2   g }t          j        ddd                              d          }|D ]<}t          |          dk    r'|                    t          j        |                     =t          dd          D ]}t          j        dd|z  d                              d          }t          |          dk    r n@|D ]<}t          |          dk    r'|                    t          j        |                     =|t          j        z   t          _        d S )	NPythonzApplication Pathr   ;r   r	      zApplication Path %d)	r   r   splitlenr{   FullPathranger   path)r)   new_pathapppathr   	extra_nums        r   rl   zCApp.SetApplicationPaths   s   '2DbIIOOPSTT 	8 	8D4yy1}} 0 6 6777q" 	< 	<I+/);R eCjj  7||q   < <t99q==OOG$4T$:$:;;;< ch&r   c                    t          j        t           j                                      d          }|                    |d                    dS )zHandle right click messager   r8   )r   LoadMenuIDR_TEXTTYPE
GetSubMenuTrackPopupMenu)r)   paramsmenus      r   r   zCApp.OnRClick   sB      455@@CCF1I&&&qr   c                l   |d         }| j                                          t          j        |          }	 t	          d|          D ]=}t          j        ||          }t          j                                        |           >	 t          j        |           n# t          j        |           w xY wdS )z-Handle a file being dropped from file managerr   r   )	rs   SetActiveWindowwin32apiDragQueryFiler   r   rd   OpenDocumentFile
DragFinish)r)   rU   	hDropInfonFilesiFilefileNames         r   r   zCApp.OnDropFiles  s    F	
""$$$'	22	+q&)) < <#1)UCC  11(;;;;< 	****H	****qs   AB B1c                    t          j                    |t           j        z
           }t          j                                        |           dS )z*Called when a File 1-n message is receivedN)r   GetRecentFileListr   rd   r   )r)   r   r   r   s       r   r   zCApp.OnFileMRU(  s?    ,..rG4M/MN))(33333r   c                P    t          j                                                     dS )z(Called when FileOpen message is receivedN)r   rd   
OnFileOpenr)   r   r   s      r   r   zCApp.HandleOnFileOpen-  s"    ##%%%%%r   c                P    t          j                                                     dS )z'Called when FileNew message is receivedN)r   rd   	OnFileNewr   s      r   r   zCApp.HandleOnFileNew1  s"    ""$$$$$r   c                p    t          j                     t                      }|                                 dS )zFCalled when HelpAbout message is received.  Displays the About dialog.N)r   InitRichEditAboutBoxDoModal)r)   r   r   dlgs       r   r   zCApp.OnHelpAbout5  s+    jjr   N)rX   rY   rZ   __doc__rc   rn   ru   ry   r|   r   r   r   rk   r   r   r   rl   r   r   r   r   r   r   r    r   r   r`   r`   s   s8       !!  

# 
# 
#  $, , ,* * ** * *  *      &  
 
 
' ' '$    J4 4 4
& & &% % %    r   r`   c                J   	 t          j        t          j        |           }t          j        ||          d         S # t           j        $ rW 	 t          j        t          j        |           }t          j        ||          d         cY S # t           j        $ r |cY cY S w xY ww xY wr'   )r   
RegOpenKeyr   HKEY_CURRENT_USERRegQueryValueExr>   HKEY_LOCAL_MACHINE)keyvaldefaulthkeys       r   _GetRegistryValuer   <  s    "8#=sCC'c22155>   	&x'BCHHD+D#66q9999~ 	 	 	NNNNN		s-   9< B"9BB"BB"BB"zIScintilla is Copyright 1998-2020 Neil Hodgson (https://www.scintilla.org)zMThis program uses IDLE extensions by Guido van Rossum, Tim Peters and others.zThanks to the following people for making significant contributions: Roger Upole, Sidnei da Silva, Sam Rushing, Curt Hagenlocher, Dave Brennan, Roger Burnham, Gordon McMillan, Neil Hodgson, Laramie Leavitt. (let me know if I have forgotten you!)c                  .    e Zd Zej        fdZd Zd ZdS )r   c                F    t           j                            | |           d S r-   )r   Dialogrc   )r)   idds     r   rc   zAboutBox.__init__P  s     tS)))))r   c                   d                     t          j        t          j        t          t
          t                    }|                     t          j        |           dd l	}|
                                d         }t          j                            |d          }	 t          |          5 }d|                                                                z  }d d d            n# 1 swxY w Y   n# t"          $ r d }Y nw xY w|st%          j        d| dd	           |                     t          j        |           |                     | j        t          j                   d S )
NzSPythonwin - Python IDE and GUI Framework for Windows.

{}

Python is {}

{}

{}

{}r   platlibzpywin32.version.txtzpywin32 build %sz'Could not read pywin32's version from ''r	   )
stacklevel)formatr   	copyrightr   	scintillaidlecontributorsSetDlgItemText	IDC_EDIT1	sysconfig	get_pathsosr   joinopenreadstripOSErrorwarningswarnIDC_ABOUT_VERSIONr   OnButHomePageIDC_BUTTON1)r)   textr  site_packagesversion_pathfvers          r   OnInitDialogzAboutBox.OnInitDialogS  s   nuus}i|
 
 	G-t444!++--i8w||M3HII	l## <q(16688>>+;+;;< < < < < < < < < < < < < < < 	 	 	CCC	 	MI,IIIVW    	G5s;;;+W-@AAAAAs6   C- +*C!C- !C%%C- (C%)C- -C<;C<c                \    |t           j        k    rt          j        dddd dd           d S d S )Nr   r
  z#https://github.com/mhammond/pywin32r   r	   )r   
BN_CLICKEDr   ShellExecuter   s      r   r  zAboutBox.OnButHomePageh  sE    8&&&!6@$A     '&r   N)rX   rY   rZ   r   IDD_ABOUTBOXrc   r  r  r    r   r   r   r   O  sO        "/ * * * *B B B*    r   r   c                    	 t           j                                         t           j                                         n#  Y nxY w| d} t	          j        |           }|t          d          |S )zProvide input() for gui appsNr   zoperation cancelled)r   stdoutflushstderrr   GetSimpleInputr   )promptr   s     r   
Win32Inputr#  o  ss    

~


'
'C
{ 5666Js	   <? Ac                 (    t           t          _        d S r-   )r#  builtinsinputr    r   r   ri   ri     s    HNNNr   c                     dt           j        v S )z7Returns true if we currently have a good gui available.zpywin.framework.startup)r   r   r    r   r   HaveGoodGUIr(    s    $33r   c                \    | ddl m} |j        }  |                                              dS )z!Creates a default GUI environmentNr	   )intpyapp)r   r*  InteractivePythonApprn   )appClassr*  s     r   CreateDefaultGUIr-    s@    0HJJr   c                 B    t                      } | st                       | S )z:Checks and creates if necessary a default GUI environment.)r(  r-  )rcs    r   CheckCreateDefaultGUIr0    s$    	B Ir   )r   r-   )'r   
__future__r   r%  r  r   r   r  typingr   r   r   r   r   	pywin.mfcr   r   r   pywin.mfc.threadr   r   r
   r   r   r!   MDIFrameWndr#   r`   r   r  r  r  r   r   r#  ri   r(  r-  r0  r    r   r   <module>r6     s  
 C B " " " " " "  				 



                , , , , , , , , , , # # # # # #      ? ? ? ?& & & &D D D5 5 5 5 5" 5 5 5pF F F F F6 F F FR
 
 
 
 X	V G    v}   @         4 4 4
       r   