a „oe??ã@s dZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z ddlmZdadadd„Zd d „Zd)d d „Zd*dd„Zdd„ZGdd„de jƒZGdd„de ƒZd+dd„ZdZdZdZGdd„de jƒZd,dd„Z d-dd „Z!d!d"„Z"d#d$„Z#d.d%d&„Z$d'd(„Z%dS)/zB The PythonWin application code. Manages most aspects of MDI, etc éN)ÚafxresÚdialogÚwindow)ÚWinAppé)Ú scriptutilscCstdƒt ¡ |¡S)NzXapp.AddIdleHandler is deprecated - please use win32ui.GetApp().AddIdleHandler() instead.)ÚprintÚwin32uiÚGetAppÚAddIdleHandler©Úhandler©rú>C:\Program Files\Certbot\pkgs\pythonwin\pywin\framework\app.pyr sÿr cCstdƒt ¡ |¡S)Nz^app.DeleteIdleHandler is deprecated - please use win32ui.GetApp().DeleteIdleHandler() instead.)rr r ÚDeleteIdleHandlerr rrrr%sÿrÚcCsd|\}}}}|r|d}t ||d|¡t ||d|¡t ||d|¡t ||d|¡dS)zÖWrites 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)r ZWriteProfileVal)ÚsectionÚrectÚstaterrrrrrrÚSaveWindowSize-s rcCs`|r |d}t ||dd¡}t ||dd¡}t ||dd¡}t ||dd¡}||||fS)zTLoads a section from an INI file, and returns a rect in a tuple (see SaveWindowSize)rrrrrr)r Ú GetProfileVal)rrrrrrrrrÚLoadWindowSize;srcCs,|d|d|d|d|d|dfS)Nérérr)rrrrÚRectToCreateStructRectFsrc@sTeZdZdZejejejeje j e j fZ dd„Z dd„Zdd„Zdd „Zd d „Zd S) Ú MainFramez Main WindowcCs | ¡dS©Nr)Ú_CreateStatusBar)ÚselfÚcsrrrÚOnCreateXszMainFrame.OnCreatecCs>t |¡|_|j |j¡| |jtj¡| |jtj¡dS©N) r ZCreateStatusBarZ statusBarZ SetIndicatorsÚstatusBarIndicatorsZHookCommandUpdateÚOnUpdatePosIndicatorÚID_INDICATOR_LINENUMÚID_INDICATOR_COLNUM©r#rrrr"\s zMainFrame._CreateStatusBarcCs–t ¡}d}|dur€zV| ¡\}}| |¡}|| |¡}|jtjkrXdd|df}ndd|df}Wntjy~Yn0|  |¡|  ¡dS)Nz z%0*dérr) rZGetActiveEditControlZGetSelZ LineFromCharZ LineIndexZm_nIDr r)ÚerrorZSetTextZEnable)r#ZcmduiZ editControlÚvalueZ startCharZendCharZlineNoZcolNorrrr(bs    zMainFrame.OnUpdatePosIndicatorc Csn|j |¡}t|jƒ}||_|d|drjt|ƒ}|d|d|d|d||d|d|d|df }|S) Nrrrrr,ééé)Ú_obj_ÚPreCreateWindowrÚ sectionPosÚ startRectr)r#ZccÚposrrrrr3ts  6zMainFrame.PreCreateWindowcCs&| ¡d}||jkr"t|j|ƒdS)Nér)ZGetWindowPlacementr5rr4)r#ÚmsgZrectNowrrrÚ OnDestroy}s   zMainFrame.OnDestroyN)Ú__name__Ú __module__Ú __qualname__r4rZ ID_SEPARATORZID_INDICATOR_CAPSZID_INDICATOR_NUMZID_INDICATOR_SCRLr r)r*r'r%r"r(r3r9rrrrr Msú  r c@s¨eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(S))ÚCAppzA class for the applicationcCs d|_t |t ¡¡g|_dSr&)ÚoldCallbackCallerrÚ__init__r r Ú idleHandlersr+rrrr?ˆsz CApp.__init__cCsRtƒt ddd¡}t |¡t ¡ddkr>t ¡t ¡| ¡|  ¡dS)zCalled to crank up the appZSettingszRecent File List Sizeé rr7N) Ú HookInputr rZLoadStdProfileSettingsÚwin32apiZ GetVersionExZSetDialogBkColorZEnable3dControlsÚ LoadMainFrameÚSetApplicationPaths)r#ZnumMRUrrrÚ InitInstances zCApp.InitInstancecCsht d¡zt |j¡Wnty,Yn0|jr8|`d|_g|_|jrV|j d¡d|_da da dS)z5Called as the app dies - too late to prevent it here!zApplication shutdown Nr) r Z OutputDebugZInstallCallbackCallerr>ÚAttributeErrorÚframer@r2Z AttachObjectÚAppÚ AppBuilderr+rrrÚ ExitInstanceœs   zCApp.ExitInstancecCs ||jvSr&)r@©r#r rrrÚHaveIdleHandler²szCApp.HaveIdleHandlercCs|j |¡dSr&)r@ÚappendrLrrrr µszCApp.AddIdleHandlercCs|j |¡dSr&)r@ÚremoverLrrrr¸szCApp.DeleteIdleHandlerc Cs¤zŒd}|jdd…}|D]n}z|||ƒ}WnRtdt|ƒƒt ¡tdƒz| |¡WntyrYn0d}Yn0|p„|}q|WStyžYn0dS)NrzIdle handler %s failedzIdle handler removed from list)r@rÚreprÚ tracebackÚ print_excrÚ ValueErrorÚKeyboardInterrupt)r#ÚcountÚretÚhandlersr ZthisRetrrrÚOnIdle»s&    z CApp.OnIdlecCstƒSr&)r r+rrrÚCreateMainFrameÐszCApp.CreateMainFramecCsX| ¡|_| |j¡|j tjtj¡|j ¡|j  t  ¡¡|j  ¡|  ¡dS)z"Create the main applications frameN) rYrHZ SetMainFrameZ LoadFramer Z IDR_MAINFRAMEÚwin32conZWS_OVERLAPPEDWINDOWZDragAcceptFilesZ ShowWindowZGetInitialStateRequestZ UpdateWindowÚ HookCommandsr+rrrrDÓs    zCApp.LoadMainFramec Cs’z\|tjkrt d¡}tj}nt d¡}tj}|durBt d¡nddlm }|  ||¡Wn0t   ¡\}}}t d||f¡d}Yn0dS)NzPythonwin ReferencezMain Python Documentationz The help file is not registered!r)Úhelpz.Internal error in help file processing %s: %s) r ÚID_HELP_GUI_REFÚregutilZGetRegisteredHelpFilerZZ HELP_CONTENTSZ HELP_FINDERZ MessageBoxrr\Z OpenHelpFileÚsysÚexc_info) r#ÚidÚcodeZhelpFileZhelpCmdr\ÚtÚvÚtbrrrÚOnHelpÝs       ÿz CApp.OnHelpcCs|D] }t|ƒqdSr&)Ú __import__)r#ÚmodulesÚmodulerrrÚ DoLoadModulesòszCApp.DoLoadModulescCs|j |jtj¡| |jtj¡| |j tj ¡| |j tj ¡| |j tj¡| |jtj¡| |jtj¡|j tj¡ |jtj¡dSr&)rHZ HookMessageÚ OnDropFilesrZZ WM_DROPFILESÚ HookCommandÚHandleOnFileOpenr Z ID_FILE_OPENÚHandleOnFileNewZ ID_FILE_NEWÚ OnFileMRUÚID_FILE_MRU_FILE1Ú OnHelpAboutZ ID_APP_ABOUTrfZID_HELP_PYTHONr]Z GetWindowZGW_CHILDÚOnRClickZWM_RBUTTONDOWNr+rrrr[øsÿzCApp.HookCommandscCs¬g}t ddd¡ d¡}|D] }t|ƒdkr| t |¡¡qtddƒD]R}t dd|d¡ d¡}t|ƒdkrtqœ|D] }t|ƒdkrx| t |¡¡qxqH|tjt_dS) NÚPythonzApplication Pathrú;rré zApplication Path %d) r rÚsplitÚlenrNZFullPathÚranger_Úpath)r#Únew_pathZapppathryZ extra_numrrrrEs"  ÿþ  zCApp.SetApplicationPathscCs$t tj¡ d¡}| |d¡dS)zHandle right click messagerr,)r ZLoadMenuZ IDR_TEXTTYPEZ GetSubMenuZTrackPopupMenu)r#ÚparamsZmenurrrrrsz CApp.OnRClickc Csf|d}|j ¡t |¡}z8td|ƒD]}t ||¡}t ¡ |¡q(Wt |¡n t |¡0dS)z-Handle a file being dropped from file managerrr) rHZSetActiveWindowrCZ DragQueryFilerxr r ÚOpenDocumentFileZ DragFinish)r#r8Z hDropInfoZnFilesZiFileÚfileNamerrrrks   zCApp.OnDropFilescCs$t ¡|tj}t ¡ |¡dS)z*Called when a File 1-n message is recievedN)r ZGetRecentFileListrpr r|)r#rarbr}rrrroCszCApp.OnFileMRUcCst ¡ ¡dS)z(Called when FileOpen message is receivedN)r r Z OnFileOpen©r#rarbrrrrmHszCApp.HandleOnFileOpencCst ¡ ¡dS)z'Called when FileNew message is receivedN)r r Z OnFileNewr~rrrrnLszCApp.HandleOnFileNewcCst ¡tƒ}| ¡dS)zFCalled when HelpAbout message is received. Displays the About dialog.N)r Z InitRichEditÚAboutBoxZDoModal)r#rarbZdlgrrrrqPszCApp.OnHelpAboutN)r:r;r<Ú__doc__r?rFrKrMr rrXrYrDrfrjr[rErrrkrormrnrqrrrrr=…s(  %r=c Cs|z t tj|¡}t ||¡dWStjyvz$t tj|¡}t ||¡dWYStjyp|YYS0Yn0dSr!)rCZ RegOpenKeyrZÚHKEY_CURRENT_USERZRegQueryValueExr-ÚHKEY_LOCAL_MACHINE)ÚkeyÚvalÚdefaultÚhkeyrrrÚ_GetRegistryValueWsr‡zHScintilla is Copyright 1998-2008 Neil Hodgson (http://www.scintilla.org)zMThis program uses IDLE extensions by Guido van Rossum, Tim Peters and others.zõThanks 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@s*eZdZejfdd„Zdd„Zdd„ZdS)rcCstj ||¡dSr&)rÚDialogr?)r#Ziddrrrr?kszAboutBox.__init__cCsÈdtjtjtttf}| tj|¡ddl}|  ¡d}z&t t j   |d¡ƒ ¡ ¡}d|}Wntytd}Yn0|durštddƒ}|duršd|f}|dur¦d }| tj|¡| |jtj¡dS) NzSPythonwin - Python IDE and GUI Framework for Windows. %s Python is %s %s %s %srZplatlibzpywin32.version.txtzpywin32 build %sz!SOFTWARE\ActiveState\ActivePythonZCurrentVersionzActivePython build %sr)r Ú copyrightr_Ú scintillaÚidleÚ contributorsZSetDlgItemTextZ IDC_EDIT1Ú sysconfigZ get_pathsÚopenÚosryÚjoinÚreadÚstripÚEnvironmentErrorr‡ZIDC_ABOUT_VERSIONrlÚ OnButHomePageZ IDC_BUTTON1)r#ÚtextrZ site_packagesZbuild_noZverrrrÚ OnInitDialogns.ÿÿ ÿ   ÿ zAboutBox.OnInitDialogcCs"|tjkrt dddddd¡dS)NrrŽz#https://github.com/mhammond/pywin32rr)rZZ BN_CLICKEDrCZ ShellExecuter~rrrr”Œs  ÿzAboutBox.OnButHomePageN)r:r;r<r Z IDD_ABOUTBOXr?r–r”rrrrrjsrcCsPztj ¡tj ¡Wn Yn0|dur2d}t |¡}|dkrLtdƒ‚|S)z Provide raw_input() for gui appsNrzoperation cancelled)r_ÚstdoutÚflushÚstderrrZGetSimpleInputrT)ÚpromptrVrrrÚ Win32RawInput“s  r›cCs tt|ƒƒS)zProvide input() for gui apps)ÚevalÚinput)ršrrrÚ Win32Input£sržcCsLz tttjd_ttjd_Wn&tyFddl}ttjd_Yn0dS)NZ __builtin__rÚbuiltins)Z raw_inputr›r_rhržrÚ NameErrorrb)rbrrrrB¨s  rBcCs dtjvS)z7Returns true if we currently have a good gui available.zpywin.framework.startup)r_rhrrrrÚ HaveGoodGUIµsr¡cCs(|durddlm}|j}|ƒ ¡dS)z!Creates a default GUI environmentNr)Úintpyapp)rr¢ZInteractivePythonApprF)ZappClassr¢rrrÚCreateDefaultGUIºs r£cCstƒ}|stƒ|S)z:Checks and creates if necessary a default GUI environment.)r¡r£)ÚrcrrrÚCheckCreateDefaultGUIÄsr¥)r)r)N)N)N)N)&r€rr_rQr^rCrZr Z pywin.mfcrrrZpywin.mfc.threadrrrrJrIr rrrrZ MDIFrameWndr r=r‡rŠr‹rŒrˆrr›ržrBr¡r£r¥rrrrÚs>    8S )