a oea@s6ddlZddlZddlZddlZddlZddlZddlmZmZm Z ddl m Z ddZ GdddZ ed Zd Zd Zd Zd ZdZdZGdddejZGddde jZGdddejZdZdZdZdZGdddej Z!Gdddej"Z#Gdddej"Z$ze%&e'Wne(y*Yn0eZ'dS) N)dialogdocviewwindow) scriptutilscCsBg}t|d}|D]&}tj|r|||t|}q|S)Nz\*)globospathisdirappend getsubdirs)dZdlistflistfrCC:\Program Files\Certbot\pkgs\pythonwin\pywin\framework\sgrepmdi.pyr !s  r c@s^eZdZdddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ dS)dirpathrc Cs|d}i}|D]}tj|rl|}||vrjd||<|rjt|}|D]}|}||vrLd||<qLqtj|rzqd}|tjvrttj|}n|dddkrN|d} zt d| d} Wnt d| dYn0z@d | dd} t | | } | rt| }nt d |Wn"t d | ddYn0nt d ||r|D]L} | |vrdd|| <|rdt| }|D] }|}||vrd||<qqdqg|_t|D]}|j|qdS) 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 isfileenvironrevalwin32uiZ MessageBoxjoinwin32apiZ RegQueryValuedirslistkeysr )selfstrrecursedprr subdirssdxZkeystrrootZsubkeyvalZxdrrr__init__,sh             zdirpath.__init__cCs |j|SNrr!keyrrr __getitem__eszdirpath.__getitem__cCs t|jSr+)lenrr!rrr__len__hszdirpath.__len__cCs||j|<dSr+r,)r!r.valuerrr __setitem__kszdirpath.__setitem__cCs |j|=dSr+r,r-rrr __delitem__nszdirpath.__delitem__cCs|j||Sr+r,r!lohirrr __getslice__qszdirpath.__getslice__cCs||j||<dSr+r,)r!r7r8seqrrr __setslice__tszdirpath.__setslice__cCs|j||=dSr+r,r6rrr __delslice__wszdirpath.__delslice__cCs0t|t|ks t|tgkr,|j|jSdSr+typerr!otherrrr__add__zs zdirpath.__add__cCs0t|t|ks t|tgkr,|j|jSdSr+r=r?rrr__radd__~s zdirpath.__radd__N)r) __name__ __module__ __qualname__r*r/r2r4r5r9r;r<rArBrrrrr+s 9rz^([a-zA-Z]:[^(]*)\(([0-9]+)\)c@s,eZdZddZddZddZddZd S) GrepTemplatecCs8tj|tjttt|dt |d|_ dS)Nz( Grep Grep Grep params (*.grep) .grep ) rRichEditDocTemplater*rZ IDR_TEXTTYPE GrepDocument GrepFrameGrepViewZ SetDocStringsGetAppZAddDocTemplate docparamsr1rrrr*s   zGrepTemplate.__init__cCs:||}|r|Stj|d}|dkr4tjStjS)Nrz.grep)ZFindOpenDocumentrr splitextrrZ(CDocTemplate_Confidence_yesAttemptNativeZ!CDocTemplate_Confidence_noAttempt)r!ZfileNameZfileTypedocextrrr MatchDocTypes zGrepTemplate.MatchDocTypecCs ||_dSr+rR)r!paramsrrr setParamsszGrepTemplate.setParamscCs|j}d|_|Sr+rW)r!tmprrr readParamsszGrepTemplate.readParamsN)rCrDrEr*rVrYr[rrrrrLs rLc@seZdZdddZdS)rONcCstj||dSr+)r MDIChildWndr*)r!Zwndrrrr*szGrepFrame.__init__)N)rCrDrEr*rrrrrOsrOc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)rNcCs6tj||d|_d|_d|_d|_d|_d|_dS)Nrr) r RichEditDocr* dirpattern filpattern greppattern casesensitiver#verbose)r!templaterrrr*szGrepDocument.__init__cCs6zt|d}Wnd}Yn0|||S)Nr)openread setInitParams OnNewDocument)r!fnmrXrrrOnOpenDocuments   zGrepDocument.OnOpenDocumentcCs,zt|jWn Yn0|jSr+)rrQDeleteIdleHandler SearchFile_obj_OnCloseDocumentr1rrrros zGrepDocument.OnCloseDocumentcCs&d|j|j|jf}tdd|dS)Nz %s %d %dGrepParams)r`rbr#rWriteProfileVal)r!paramstrrrrsaveInitParamss zGrepDocument.saveInitParamsc Cs"|durtddd}|d}t|dkrB|dgdt|}t|dkrd|dgdt|}|d|_|d |_|d |_t|d|_t|d |_ t|d |_ |jsz6t d }tjtj||_Wn$ttjfyt|_Yn0|jsd |_dS)Nrprqz 1 0 0 r]rrrz*.py)rZ GetProfileValrr0r_r`raintrbr#rcZ GetMainFrameZ MDIGetActiveZ GetEditorViewrr abspathdirname GetDocument GetPathNameAttributeErrorerrorgetcwd)r!rsrXZeditorrrrrhs.       zGrepDocument.setInitParamscCs|jdkr|tt|j|j|j|j|j|j }| t j kr|d|_|d|_|d|_|d|_|d|_|d|_ | |dSd S) Nr]r_r`rarb recursivercrr)r_rh greptemplater[ GrepDialogr`rarbr#rcDoModalwin32conIDOKdoSearchrt)r!r rrrris*       zGrepDocument.OnNewDocumentcCsBt|j|j|_|d|j|jf|d|jd|j rb|dt |jj d|d|jd|d|jd|j d|_ |jrt|j|_nt|jtj|_tdd d |_|_d |_|js|d |j|d n0t|jd d |j d |_t|jdS) NzGrep for %s in %sz#Search  z# =z# Files z# For rzSearching. Please wait...rz6# ERROR: '%s' does not resolve to any search locationsr)rr_r#r$ZSetTitlerar` GetFirstViewAppendrcreprrrfplistrbrecompilepat IGNORECASEr SetStatusTextdpndxfpndxfndxSetModifiedFlagrrrQZAddIdleHandlerrmr1rrrr s.    zGrepDocument.doSearchcCs|jd|_|jt|jkr|j|j}|jrD|d|dtj|rt d|dt |d }t t|D]B}||}|j|dkrz||dt|dd|qznd |_|jd|_|jt|jkr t|j|jd |j|j|_nd|_|jd|_|jt|jkrTt|j|jd |j|j|_n|d}t|d}t||dSdS)Nrrxr)GetLine regexGrepmatchgrouprzrZJumpToDocument)r!rXrregexGrepResultfnamerrrrs   zGrepView.OnLDblClickc CsXt}tjtjB}|jd}|j|}t |}|rv| d|_ t | d|_ ||td|j |tj||td|j\}}||kr|j|} ||| || |_||td|j|tj||tjd||tjd||tjd ||tj||tjd ||tj||td ||d d S)Nrrrxz&Open z &Try Againz &Grep for zCu&tz&Copyz&Pastez &Select allz Sa&ve resultsrr)rZCreatePopupMenurZ MF_STRINGZ MF_ENABLEDrnZ LineFromCharrrrrrjrzlnnumZ AppendMenurZ MF_SEPARATORrZGetSel LineIndexselrZ ID_EDIT_CUTZ ID_EDIT_COPYZ ID_EDIT_PASTEZID_EDIT_SELECT_ALLrZTrackPopupMenu) r!rXZmenuflagslinenorrZ charstartZcharendZ linestartrrrrs4        zGrepView.OnRClickcCsBt|j}|r>|}z|t|jWn Yn0dS)Nr)rrQOpenDocumentFilerjrZGotoLinerzr)r!cmdcoderTZvwrrrrszGrepView.OnCmdOpenFilecCsH|dkr dS|}|d}|j|d<td|tdS)Nrrrurx)r}rrrrrYrr)r!rrZ curparamsstrrXrrrrs   zGrepView.OnCmdGrepcCs*|dkr dSt|tdS)Nrr)rrYr}rrr!rrrrrrs zGrepView.OnTryAgaincCsV|dkr dStj}tddd|d|}|d|tjkrR|}|j |dS)NrrzText Files (*.txt)|*.txt||zSave Results As) rZOFN_OVERWRITEPROMPTrZCreateFileDialogZ SetOFNTitlerrr~rnZ SaveTextFile)r!rrrdlgZpnrrrrs   zGrepView.OnCmdSavecCsB|}||dt||d}|||||dSNr)Z GetLineCountrr0rSetSelZ ReplaceSel)r!ZstrngZnumlinesendposrrrrs  zGrepView.AppendN) rCrDrEr*rrrrrrrrrrrrrrPks    rPc@s4eZdZddZddZddZddZd d Zd S) rc CstjtjBtjBtjBtjBtjB}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| tddd|tjBtjBtj Bg| tddd|tjBtjBtj Bg| tddd|tjBtjBtj Bg| tdtjd |tjBtj Bg| td!tjd"|tjBtj Bgtj|| |dd#|d d$|dd%|dd&|dd'|dd(||jjd#<||jjd$<||jjd%<||jjd&<||jjd'<||jjd(<||jd||jddS))Nrp)rrZz MS Sans Serifz Grep For:r)r2 e)4r z Directories:)rrrf)rrrFrz...n)rrz File types:)r!rrg)rrrFro)rrrrzCase sensitiveh)r-HrZSubdirectoriesi)r8rrVerbosej)rCrrOK)5 Cancel)rrrrrar_r`rbrrc)r DS_MODALFRAMEWS_POPUP WS_VISIBLE WS_CAPTION WS_SYSMENU DS_SETFONTWS_CHILDr STATICEDIT WS_TABSTOPES_AUTOHSCROLL WS_BORDERBUTTON BS_PUSHBUTTONZBS_AUTOCHECKBOXZ BS_LEFTTEXTrBS_DEFPUSHBUTTONIDCANCELrDialogr*ZAddDDXrndatarOnMoreDirectories OnMoreFiles) r!r$fpZgpcsrevstyleCSrZrrrr*s                        zGrepDialog.__init__cCs|dkr dS|dddS)NrrzGrep\Directoriesr_getMorerrrrrYszGrepDialog.OnMoreDirectoriescCs|dkr dS|dddS)NrrzGrep\File Typesr`rrrrrr^szGrepDialog.OnMoreFilesc Cs|dt}t||}g}|D]}||ddq&t|}|t j krd | }||j j|<d} |} | r|| }|D] } t|t| | || d} q|ddS)Nr=rr) UpdateDatarZGetProfileFileNamerZGetProfileSectionr rGrepParamsDialogrrrrgetItemsrnrgetNewrrr) r!sectionr.ZiniZsecitemsitemsZsecitemrZitemstrrnewitemsitemrrrrcs$    zGrepDialog.getMorecCsT|ddD]6\}}||s||ttddSq|jdS)Nr))rra)rr_)rr`zPlease enter a value) r GetDlgItemZSetFocusrZ MessageBeeprrrnOnOK)r!idnamerrrrys   zGrepDialog.OnOKN)rCrDrEr*rrrrrrrrrs rc@sDeZdZddZddZddZddZd d Zd d Zd dZ 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|tjBtjBgtj||||jd||jddS)NzGrep Parameters)rrdrr]k)rrrr)rrrr)rrrzNew:r)rxSrl)rrZAddm)rrrr) r rrrrrrrrrr LISTBOXZLBS_MULTIPLESELZ LBS_STANDARDZLBS_HASSTRINGSrZ LBS_NOTIFYrrrrrrrrrrrr*r OnAddItemOnListDoubleClick)r!r rrrZrrrr*s      zGrepParamsDialog.__init__cCs*|d}|jD]}||q|jSNr)rr  AddStringrn OnInitDialog)r!lbrrrrr%s   zGrepParamsDialog.OnInitDialogcCsP|dkr dS|d}|d}|j||d}||}||ddS)Nrrrr)rrrr r$r)r!rrZebrr&rrrrr!s      zGrepParamsDialog.OnAddItemcCs|tjkr|dSdSr)rZ LBN_DBLCLKrrrrrr"s z"GrepParamsDialog.OnListDoubleClickcCs"|d}||_|jdSr#)rZGetSelTextItems selectionsrnr)r!r&rrrrs  zGrepParamsDialog.OnOKcCs|jSr+)r'r1rrrr szGrepParamsDialog.getItemscCs|jSr+)rr1rrrr szGrepParamsDialog.getNewN) rCrDrEr*r%r!r"rr r rrrrr sF r ))rrrrrrZ pywin.mfcrrrr]rr rrrrrrr Z SCROLLBARZCOMBOBOXrMrLr\rOr^rNrrrrrrPrrr rQZRemoveDocTemplater NameErrorrrrrsB  [ 3j4i