a „oe/qã@sNddlZddlZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z ddl m Z dd„ZGdd„dƒZe d ¡Zd Zd Zd Zd ZdZdZGdd„de jƒZGdd„de jƒZGdd„de jƒZdZdZdZ dZ!dZ"dZ#Gdd„de j$ƒZ%Gdd„de j&ƒZ'Gd d!„d!e j&ƒZ(ze )¡ *e+¡Wne,yBYn0eƒZ+dS)"éN)ÚdialogÚdocviewÚwindowé)Ú scriptutilscCsBg}t |d¡}|D]&}tj |¡r| |¡|t|ƒ}q|S)Nz\*)ÚglobÚosÚpathÚisdirÚappendÚ getsubdirs)ÚdZdlistÚflistÚf©rúHC:\Program Files\Certbot\pkgs\pythonwin\pywin\framework\mdi_pychecker.pyr 2s  r c@s^eZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dS)Údirpathrc CsÚ| d¡}i}|D]ž}tj |¡rl| ¡}||vrjd||<|rjt|ƒ}|D]}| ¡}||vrLd||<qLqtj |¡rzqd}|tjvr˜ttj|ƒ}nÄ|dd…dkrN| d¡} zt d| dƒ} Wnt   d| d¡Yn0z@d  | dd…¡} t  | | ¡} | rt| ƒ}nt   d |¡Wn"t   d | dd…¡Yn0nt   d |¡|r|D]L} | |vrdd|| <|rdt| ƒ}|D] }| ¡}||vrŒd||<qŒqdqg|_| ¡D]}|j |¡qÂdS) Nú;éZHKEY_ú\z win32con.rz&Can't interpret registry key name '%s'rz.Registry path '%s' did not return a path entryz&Can't interpret registry key value: %szDirectory '%s' not found)Úsplitrr r Úlowerr ÚisfileÚenvironrÚevalÚwin32uiZ MessageBoxÚjoinÚwin32apiZ RegQueryValueÚdirsÚkeysr )ÚselfÚstrÚrecurseÚdprr ÚsubdirsÚsdÚxZkeystrÚrootZsubkeyÚvalZxdrrrÚ__init__=sh        ÿ   ÿÿ    zdirpath.__init__cCs |j|S©N©r©r ÚkeyrrrÚ __getitem__vszdirpath.__getitem__cCs t|jƒSr*)Úlenr©r rrrÚ__len__yszdirpath.__len__cCs||j|<dSr*r+)r r-ÚvaluerrrÚ __setitem__|szdirpath.__setitem__cCs |j|=dSr*r+r,rrrÚ __delitem__szdirpath.__delitem__cCs|j||…Sr*r+©r ÚloÚhirrrÚ __getslice__‚szdirpath.__getslice__cCs||j||…<dSr*r+)r r6r7ÚseqrrrÚ __setslice__…szdirpath.__setslice__cCs|j||…=dSr*r+r5rrrÚ __delslice__ˆszdirpath.__delslice__cCs0t|ƒt|ƒks t|ƒtgƒkr,|j|jSdSr*©Útyper©r ÚotherrrrÚ__add__‹s zdirpath.__add__cCs0t|ƒt|ƒks t|ƒtgƒkr,|j|jSdSr*r<r>rrrÚ__radd__s zdirpath.__radd__N)r) Ú__name__Ú __module__Ú __qualname__r)r.r1r3r4r8r:r;r@rArrrrr<s 9rz%^(..[^\(:]+)?[\(:](\d+)[\):]:?\s*(.*)é€éé‚éƒé„é…c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú TheTemplatecCs8tj |tjttt¡| d¡t  ¡  |¡d|_ dS)NzA Pychecker Pychecker Pychecker params (*.pychecker) .pychecker ) rÚRichEditDocTemplater)rZ IDR_TEXTTYPEÚ TheDocumentÚTheFrameÚTheViewZ SetDocStringsÚGetAppZAddDocTemplateÚ docparamsr0rrrr)¤s ÿÿzTheTemplate.__init__cCs:| |¡}|r|Stj |¡d ¡}|dkr4tjStjS)Nrz .pychecker)ZFindOpenDocumentrr ÚsplitextrrZ(CDocTemplate_Confidence_yesAttemptNativeZ!CDocTemplate_Confidence_noAttempt)r ZfileNameZfileTypeÚdocÚextrrrÚ MatchDocType®s zTheTemplate.MatchDocTypecCs ||_dSr*©rQ)r ÚparamsrrrÚ setParams·szTheTemplate.setParamscCs|j}d|_|Sr*rV)r ÚtmprrrÚ readParamsºszTheTemplate.readParamsN)rBrCrDr)rUrXrZrrrrrK£s  rKc@seZdZddd„ZdS)rNNcCstj ||¡dSr*)rÚ MDIChildWndr))r Zwndrrrr)ÂszTheFrame.__init__)N)rBrCrDr)rrrrrNÀsrNc@steZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)rMcCs6tj ||¡d|_d|_d|_d|_d|_d|_dS)NÚrr) rÚ RichEditDocr)Ú dirpatternÚ filpatternÚ greppatternÚ casesensitiver"Úverbose)r Útemplaterrrr)ÇszTheDocument.__init__cCs6zt|dƒ ¡}Wnd}Yn0| |¡| ¡S)NÚr)ÚopenÚreadÚ setInitParamsÚ OnNewDocument)r ÚfnmrWrrrÚOnOpenDocumentÐs   zTheDocument.OnOpenDocumentcCs,zt ¡ |j¡Wn Yn0|j ¡Sr*)rrPÚDeleteIdleHandlerÚ idleHandlerÚ_obj_ÚOnCloseDocumentr0rrrrnÛs zTheDocument.OnCloseDocumentcCs"d|j|jf}t dd|¡dS)Nz %d %dÚ PycheckerÚParams)rar"rÚWriteProfileVal)r ÚparamstrrrrÚsaveInitParamsâszTheDocument.saveInitParamsc Csb|durt ddd¡}| d¡}t|ƒdkrB|dgdt|ƒ}t|ƒdkrd|dgdt|ƒ}|d|_|d |_|d p‚d |_t|dƒ|_t|d ƒ|_ t|d ƒ|_ |jsz6t  ¡  ¡d  ¡}tj tj | ¡ ¡¡¡|_Wn$ttjfyt ¡|_Yn0|js^z&t  ¡  ¡d  ¡}| ¡ ¡|_Wnty\d|_Yn0dS)Nrorpz 1 0 0ú ér\érréz -#1000 --onlyérz*.py)rZ GetProfileValrr/r^r_r`Úintrar"rbZ GetMainFrameZ MDIGetActiveZ GetEditorViewrr ÚabspathÚdirnameÚ GetDocumentÚ GetPathNameÚAttributeErrorÚerrorÚgetcwd)r rrrWZeditorrrrrgçs6     ÿ zTheDocument.setInitParamscCsz|jdkr| t ¡¡t|j|j|j|j|j|j ƒ}|  ¡t j krv|d|_|d|_|d|_|  ¡| ¡dSdS)Nr\r^r_r`rr)r^rgÚ greptemplaterZÚ TheDialogr_r`rar"rbÚDoModalÚwin32conÚIDOKÚdoSearchrs)r r rrrrhs$ ú   zTheDocument.OnNewDocumentcCs*t|j|jƒ|_| d|j|jf¡| ¡ d|jdt   ¡¡|j rj| ¡ dt |jj ƒd¡| ¡ d|jd¡| ¡ d|jd¡|j d¡|_| ¡ d ¡t d d ¡d |_|_d |_|jsú| ¡ d |j¡| d ¡n,d dl}t|jtttj|jƒƒƒ|_| ¡dS)Nz Pychecker Run '%s' (options: %s)z#Pychecker Run in z %s z# =Ú z # Files z # Options rzT# Running... ( double click on result lines in order to jump to the source code ) z"Pychecker running. Please wait...réÿÿÿÿz6# ERROR: '%s' does not resolve to any search locations)rr^r"r#ZSetTitler_r`Ú GetFirstViewÚAppendÚtimeÚasctimerbÚreprrrÚfplistrÚ SetStatusTextÚdpndxÚfpndxÚfndxÚSetModifiedFlagÚoperatorÚreduceÚaddÚlistÚmaprrÚstartPycheckerRun)r r”rrrr†s8ÿÿÿ  ÿÿ zTheDocument.doSearchcCs4ddl}| d¡|jdkr0t ¡ |j¡dSdS)Nrgü©ñÒMbP?r)r‹ÚsleepÚresultrrPrkrl)r ÚhandlerÚcountr‹rrrrl>s   zTheDocument.idleHandlercCsDd|_t t dtj¡¡}t ¡ |j ¡ddl }|  |j d¡dS)Nrr) r›rZ SetCursorZ LoadCursorr„ZIDC_APPSTARTINGrrPZAddIdleHandlerrlÚ_threadÚ start_newÚthreadPycheckerRun)r Úoldržrrrr™Gs zTheDocument.startPycheckerRunc CsZd}d}z"|j}d |j¡}tj tjd¡}tj |¡sldtjvrZtj tjddd¡}ntj tjdd¡}zt   |¡}Wnt j y’d}Yn0ddl }tj |  ¡d d d ¡}tj |¡sÆd }n0tj |¡sØd }nd||||f}t |¡ ¡}| ¡ |¡W||_tdƒ| ¡ d¡| d¡n(||_tdƒ| ¡ d¡| d¡0dS)Nr\rˆú z python.exez64 bitZPCBuildZamd64rZpurelibÚ pycheckerz checker.pyzCan't find python.exe! zlCan't find checker.py - please install pychecker (or run 'setup.py install' if you have the source version) z%s "%s" %s %s 2>&1z== Pychecker run finished ==z == Pychecker run finished ==)r`rrrr ÚsysÚprefixrÚversionrZGetShortPathNamerÚ sysconfigZ get_pathsÚpopenrfr‰rŠr›Úprintr“) r r›ÚrcÚoptionsÚfilesÚpyr§r£Úcmdrrrr PsD    ÿ  ÿ ýzTheDocument.threadPycheckerRuncCs†|jd|_|jt|jƒkr´|j|j}|jrD| ¡ d|d¡t d|d¡t|dƒ  ¡}t t|ƒƒD]B}||}|j   |¡dkrn| ¡ |dt |dƒd|¡qnnÎd |_|jd|_|jt|jƒkrüt |j|jd |j|j¡|_n†d|_|jd|_|jt|jƒkrFt |j|jd |j|j¡|_n  * ÿ ÿ  z!TheDocument._inactive_idleHandlercCsD|jd|jd|jdt|jƒdt|jƒdt|jƒS)Nrt)r^r_r`rrar"rbr0rrrÚ GetParams¢s,ÿþýüûúùø ÷ öÿzTheDocument.GetParamscCs6t|dƒ}| ¡d}| |¡| ¡| d¡dS)NÚwbr‡rr)rer¸ÚwriteÚcloser“)r ÚfilenameZsavefileZtxtrrrÚOnSaveDocument±s     zTheDocument.OnSaveDocumentN)rBrCrDr)rjrnrsrgrhr†rlr™r r·r¸r½rrrrrMÆs  "  .$rMiåiåiiiic@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dS)rOcCs&tj ||¡| tj¡| ¡dSr*)rÚ RichEditViewr)Z SetWordWraprZCRichEditView_WrapNoneÚ HookHandlers)r rSrrrr)Ås zTheView.__init__cCs|j ¡}d}| |¡|S)N)ièréÈrrré1z Courier New)rmÚOnInitialUpdateZSetDefaultCharFormat)r rªÚformatrrrrÂÊs  zTheView.OnInitialUpdatecCsx| |jtj¡| |jt¡| |jt¡| |j t ¡| |j t ¡| |j t¡| |j t¡| |jtj¡dSr*)Z HookMessageÚOnRClickr„ZWM_RBUTTONDOWNÚ HookCommandÚ OnCmdOpenFileÚ ID_OPEN_FILEÚOnCmdTheÚ ID_PYCHECKERÚ OnCmdSaveÚID_SAVERESULTSÚ OnTryAgainÚ ID_TRYAGAINÚ OnAddCommentÚ ID_ADDCOMMENTÚID_ADDPYCHECKNO2Ú OnLDblClickZWM_LBUTTONDBLCLKr0rrrr¿ÐszTheView.HookHandlerscCsB| ¡}t |¡}|r>| d¡}t| d¡ƒ}t ||¡dSdS)Nrrwr)ÚGetLineÚ regexGrepÚmatchÚgroupryrÚJumpToDocument)r rWr¶ÚregexGrepResultÚfnamerrrrÑÚs   zTheView.OnLDblClickc Cs*t ¡}tjtjB}|j d¡}|j |¡}t  |¡}|j  ¡\}}|r |  d¡|_ t |  d¡ƒ|_| |td|j ¡| |td¡| |td¡| tj¡| |td¡| |tjd¡| |tjd ¡| |tjd ¡| |tj¡| |tjd ¡| |tj¡| |td ¡| |d ¡dS)Nrˆrrwz&Open z+&Add to source: Comment Tag/#$pycheck_no ..z4&Add to source: Specific #$pycheck_no=%(errtext)s ..z &Try AgainzCu&tz&Copyz&Pastez &Select allz Sa&ve resultsrr)rZCreatePopupMenur„Z MF_STRINGZ MF_ENABLEDrmÚ LineFromCharrÒrÓrÔÚGetSelrÕriryÚlnnumZ AppendMenurÇrÏrÐZ MF_SEPARATORrÍZ ID_EDIT_CUTZ ID_EDIT_COPYZ ID_EDIT_PASTEZID_EDIT_SELECT_ALLrËZTrackPopupMenu) r rWZmenuÚflagsÚlinenor¶r×Z charstartZcharendrrrrÄäs:     ÿý zTheView.OnRClickcCsT|tk}t| ¡ƒ}| ¡|\}}| |¡| |¡}}d} t||dƒD]} | | ¡} t | ¡} | rL| rœd} t   d||d|rŒdpŽd¡} | sœdS|   d¡}t |   d¡ƒ} t  || ¡}| | ¡d}| |d|¡dvrê|d8}| ||¡|   d¡}||kr||kr| ¡}tt |¡ d d ¡ƒ}| |rH| tƒpJ| ¡qLdS) NrrzAdd to %s linesz #$pycheck_no=%(errtext)sz #$pycheck_norw)ú r‡ruz\ r¢)rÐr—rÚÚsortrÙr±rÒrÓrÔrZGetSimpleInputrÕryrrÖÚ LineIndexZ GetTextRangeÚSetSelZ GetSelTextrÚreÚescapeÚreplaceÚ ReplaceSelÚlocals)r r®ÚcodeZ addspecificÚ_ÚstartÚendZ line_startZline_endÚfirstrµr¶ÚmZcmntrØÚviewÚposZerrtextrrrrÎsD   ÿü    zTheView.OnAddCommentcCsBt ¡ |j¡}|r>| ¡}z| t|jƒ¡Wn Yn0dS©Nr)rrPÚOpenDocumentFilerir‰ZGotoLineryrÛ)r r®rçrSZvwrrrrÆ'szTheView.OnCmdOpenFilecCs<| ¡ ¡}| d¡}|j|d<t d |¡¡t ¡dS)Nrtrwr)r|r¸rZselrrXrrð)r r®rçZ curparamsstrrWrrrrÈ2s    zTheView.OnCmdThecCst | ¡ ¡¡t ¡dSrï)rrXr|r¸rð©r r®rçrrrrÌ:szTheView.OnTryAgaincCsJtj}t ddd|d|¡}| d¡| ¡tjkrF| ¡}|j  |¡dS)NrzText Files (*.txt)|*.txt||zSave Results As) r„ZOFN_OVERWRITEPROMPTrZCreateFileDialogZ SetOFNTitlerƒr…r}rmZSaveFile)r r®rçrÜÚdlgZpnrrrrÊ?s ÿ  zTheView.OnCmdSavecCsB| ¡}| |d¡t| |d¡ƒ}| ||¡| |¡dS©Nr)Z GetLineCountràr/rÒrárå)r ZstrngZnumlinesÚendposrrrrŠJs  zTheView.AppendN)rBrCrDr)rÂr¿rÑrÄrÎrÆrÈrÌrÊrŠrrrrrOÄs  $  rOc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) r‚c CsètjtjBtjBtjBtjBtjB}tjtjB}dd|ddgg} |  t ddd|g¡|  t |dd|tj Btj Btj Bg¡|  t d dd |g¡|  t |d d |tj Btj Btj Bg¡|  td dd|tjBtj Bg¡|  t ddd|g¡|  t |dd|tj Btj Btj Bg¡|  td dd|tjBtj Bg¡|  tdtjd|tjBtj Bg¡|  tdtjd|tjBtj Bg¡tj || ¡| dd¡| d d¡| dd¡||jjd<||jjd<||jjd<| |jd¡| |jd¡dS)Nz Pychecker Run)rréÒéZ©éz MS Sans SerifzFiles:rˆ)érùé2é ég)é4rùéé z Directories:)rùérúrûéf)rýrrErÿz...én)é¶rérÿzOptions:)rùé!rúrûée)rýrrErÿéo)rrrrÿÚOK)é¦é5é é ÚCancel)r éCr r r`r^r_)r„Ú DS_MODALFRAMEÚWS_POPUPÚ WS_VISIBLEÚ WS_CAPTIONÚ WS_SYSMENUÚ DS_SETFONTÚWS_CHILDr ÚSTATICÚEDITÚ WS_TABSTOPÚES_AUTOHSCROLLÚ WS_BORDERÚBUTTONÚ BS_PUSHBUTTONr…ÚBS_DEFPUSHBUTTONÚIDCANCELrÚDialogr)ZAddDDXrmÚdatarÅÚOnMoreDirectoriesÚ OnMoreFiles) r r#ÚfpZgpÚcsrdÚvÚstyleÚCSrYrrrr)Rs¦ÿþýüûÿ  ÿûÿ ûÿ ûÿ ûÿ ûÿ ûÿ ûÿ       zTheDialog.__init__cCs| dd¡dS)NzPychecker\Directoriesr^©ÚgetMorerñrrrr!´szTheDialog.OnMoreDirectoriescCs| dd¡dS)NzPychecker\File Typesr_r(rñrrrr"·szTheDialog.OnMoreFilesc Cs¼| d¡t ¡}t ||¡}g}|D]}| | d¡d¡q&t|ƒ}| ¡t j kr¸d  |  ¡¡}||j j|<d} | ¡} | r®|| }|D] } t |t| ƒ| |¡| d} qŒ| d¡dS)Nrú=rr)Ú UpdateDatarZGetProfileFileNamerZGetProfileSectionr rÚTheParamsDialogrƒr„r…rÚgetItemsrmr ÚgetNewrqr) r Úsectionr-ZiniZsecitemsÚitemsZsecitemròZitemstrrµÚnewitemsÚitemrrrr)ºs$    zTheDialog.getMorecCsT| d¡dD]6\}}||s| |¡ ¡t ¡t d¡dSq|j ¡dS)Nr))rr`)rr^)rür_zPlease enter a value) r+Ú GetDlgItemZSetFocusrZ MessageBeeprrrmÚOnOK)r ÚidÚnamerrrr4Ðs   zTheDialog.OnOKN)rBrCrDr)r!r"r)r4rrrrr‚Qs br‚c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)r,cCsJ||_g|_tjtjBtjBtjBtjBtjB}tj tjB}dd|ddgg}|  t ddd|tj Btj BtjBtjBtjBg¡|  tdtjd|tjBtjBg¡|  td tjd |tjBtjBg¡|  td d d |g¡|  tddd|tjBtjBtjBg¡|  tddd|tjBtjBg¡tj ||¡| |jd¡| |jd¡dS)NzPychecker Parameters)rréÍédr÷r\ék)rùrùé–éHr)é§rùr r r )r<ér r zNew:rˆ)rwéSér él)ér>é‹r ZAddém)r<r>r r ) r0r1r„rrrrrrrr ÚLISTBOXZLBS_MULTIPLESELZ LBS_STANDARDZLBS_HASSTRINGSrZ LBS_NOTIFYrr…rrrrrrrrrr)rÅÚ OnAddItemÚOnListDoubleClick)r r0r&r'rYrrrr)às˜ÿþýüûÿ ûÿ ÿþýüûûÿûÿ ûÿ ûÿ ûÿ zTheParamsDialog.__init__cCs*| d¡}|jD]}| |¡q|j ¡S©Nr9)r3r0Ú AddStringrmÚ OnInitDialog)r Úlbr2rrrrI,s   zTheParamsDialog.OnInitDialogcCsD| d¡}| d¡}|j |¡| d¡}| |¡}| |d¡dS)Nr@rr9r)r3rÒr1r rHrá)r r®rçZebr2rJrµrrrrE2s      zTheParamsDialog.OnAddItemcCs|tjkr| ¡dSdSró)r„Z LBN_DBLCLKr4rñrrrrF;s z!TheParamsDialog.OnListDoubleClickcCs"| d¡}| ¡|_|j ¡dSrG)r3ZGetSelTextItemsÚ selectionsrmr4)r rJrrrr4@s  zTheParamsDialog.OnOKcCs|jSr*)rKr0rrrr-EszTheParamsDialog.getItemscCs|jSr*)r1r0rrrr.HszTheParamsDialog.getNewN) rBrCrDr)rIrErFr4r-r.rrrrr,ßsL r,)-rrrâr¤r‹rr„rZ pywin.mfcrrrr\rr rÚcompilerÓrrrrDZ SCROLLBARZCOMBOBOXrLrKr[rNr]rMrÇrÉrËrÍrÏrÐr¾rOrr‚r,rPZRemoveDocTemplaterÚ NameErrorrrrrÚ$sL  [ wm