a „oedLã@s,ddlZddlZddlZddlZddlZddlmZddlmZej ej ej Z Gdd„de ƒZGdd„de ƒZdd „Zd d „Zzeed ƒj_Wney¤Yn0Gd d„dƒZGdd„dƒZdd„Zdd„Zdd„ZGdd„dƒZd$dd„Zdd„Zdd„ZGdd „d ƒZd!d"„Ze d#kr(eƒdS)%éN)Údefault_scintilla_encoding)ÚGetSimpleInputc@s eZdZdS)Ú TextErrorN©Ú__name__Ú __module__Ú __qualname__©r r úJC:\Program Files\Certbot\pkgs\pythonwin\pywin\scintilla\IDLEenvironment.pyrsrc@s eZdZdS)Ú EmptyRangeNrr r r r r sr c Csfzd|}t|ƒWn<tyP}z$d||f}t |¡WYd}~dSd}~00tj|}t|_|S)Nú pywin.idle.zqThe IDLE extension '%s' can not be located. Please correct the installation and restart the application. %s)Ú __import__Ú ImportErrorÚwin32uiÚ MessageBoxÚsysÚmodulesrÚTclError)ÚmoduleÚmodnameZdetailsÚmsgÚmodr r r Ú GetIDLEModules þÿ  rcCsh|jr d}nRd|jvr*|jj ¡ d¡|_|j}|jd}|_|t|ƒkrRd}n ||d}|  t ¡S)NÚÚ _scint_linesÚ é) ÚfinishedÚ__dict__ÚtextÚeditÚ GetTextRangeÚsplitrÚiÚlenÚencoder)ÚselfÚvalÚslr#r r r Ú fast_readline0s   r)Z AutoIndentc@s`eZdZdd„Zdd„Zdd„Zdd„Zdd d „Zdd d„Zdd„Z dd„Z dd„Z dd„Z d S)ÚIDLEEditorWindowcCs ||_t|ƒ|_i|_i|_dS©N)r ÚTkTextrÚ extensionsÚextension_menus©r&r r r r Ú__init__Is zIDLEEditorWindow.__init__cCsTd|_|_d|_z4|j ¡D]}t|ddƒ}|dur|ƒqWi|_ni|_0dS)NÚclose)r rr.r-ÚvaluesÚgetattr)r&ÚextZcloserr r r r1Os   zIDLEEditorWindow.closecCs˜|j |¡}|dur|St|ƒ}|dur,dSt||ƒ}||ƒ}|j|<dd„t|ƒDƒ}|D]4}d|dd… dd¡f}|jj |t||ƒ¡q^|S)NcSs g|]}|dd…dkr|‘qS)éúÿÿÿNZ_eventr ©Ú.0Úitemr r r Ú dóz2IDLEEditorWindow.IDLEExtension..z<<%s>>r5Ú_ú-) r-Úgetrr3ÚdirÚreplacer ÚbindingsÚbind)r&Ú extensionr4rÚklassZeventsÚeventÚnamer r r Ú IDLEExtensionZs  zIDLEEditorWindow.IDLEExtensionc Cs€|jj}g}|j ¡D]d}t|dgƒ}|D]N\}}||kr*dd„|DƒD].\}} | dd¡}| dd¡}| || f¡qHq*q|S)NÚmenudefscSsg|]}|dur|‘qSr+r r6r r r r9rr:z1IDLEEditorWindow.GetMenuItems..ú&z&&r;)r r@r-r2r3r?Úappend) r&Z menu_namer@Úretr4rGrEÚitemsrrDr r r Ú GetMenuItemsjs    zIDLEEditorWindow.GetMenuItemsNrc Csšt|t|ƒ|ƒ}|durdSd}z t|ƒ}WntyBd}Yn0|sb|durb||krbd|f}|s€|dur€||kr€d|f}|r–t ||tj¡q|S)NrzPlease enter an integerz3Please enter an integer greater then or equal to %sz0Please enter an integer less then or equal to %s)rÚstrÚintÚ ValueErrorrrÚwin32conZMB_OK) r&ÚcaptionÚpromptÚparentZ initialvalueZminvalueZmaxvalueÚrcÚerrr r r Ú askinteger{s$   ÿ zIDLEEditorWindow.askintegercCst ||tj¡tjkSr+)rrrPZMB_YESNOZIDYES)r&rQrRrSr r r Úaskyesno’szIDLEEditorWindow.askyesnocCs2|j |¡}|jj ¡}|r.| |¡dur.dSdS)Nrr)rÚ _getoffsetr Z _GetColorizerZGetStringStyle)r&Z text_indexÚcr r r Úis_char_in_string›s   z"IDLEEditorWindow.is_char_in_stringcCs<z"|j d¡}|j d¡}||fWSty6YdS0dS)Nz sel.firstzsel.last)NN)rÚindexr)r&ÚfirstÚlastr r r Úget_selection_indices¨s     z&IDLEEditorWindow.get_selection_indicescCs|j |¡dSr+)r ZSCISetTabWidth)r&Úwidthr r r Ú set_tabwidth°szIDLEEditorWindow.set_tabwidthcCs |j ¡Sr+)r Z GetTabWidth©r&r r r Ú get_tabwidth³szIDLEEditorWindow.get_tabwidth)NrNN)N) rrrr0r1rFrLrVrWrZr^r`rbr r r r r*Hs ÿ   r*c@s$eZdZdd„Zdd„Zdd„ZdS)ÚCallTipscCs ||_dSr+)r r/r r r r0¹szCallTips.__init__cCs|j |¡dSr+)r ZSCICallTipShow)r&Ztip_textr r r Úshowtip¼szCallTips.showtipcCs|j ¡dSr+)r ZSCICallTipCancelrar r r Úhidetip¿szCallTips.hidetipN)rrrr0rdrer r r r rc¸srccCs:d}t|| ¡ƒ}| |¡}| |¡}d|d||fS)Nrz%d.%dr)ÚminÚ GetTextLengthZ LineFromCharÚ LineIndex)Úoffsetr ZlineoffÚlineZ lineIndexr r r ÚTkOffsetToIndexÆs   rkcCsÚt|ƒ}||krdS||kr4||tjvr4|d}q||dvrP|||dfS|}||krx||tjdvrx|d}qT||kr|||…|fS|}||kr¾||tjtjdvr¾|d}q”||krÖ|||…|fSdS)N)Nrrz+-Ú.)r$ÚstringZ whitespaceÚdigits)rMÚposÚendZendPosr r r Ú_NextTokÏs$     rqc Cs&t|dƒ\}}|durtdƒ‚| d¡dkrz¸| dd¡\}}|dksP|dkr˜|dkr`tdƒ‚| ¡}|d|d kr|t‚|dkrŽ|d}qä|d }nLt|ƒd }|| ¡kr¾| ¡d }n&|  |¡}|d krØ| ¡}|t|ƒ}Wn$tt fy td |ƒ‚Yn0n||d kr&| ¡d}nd|d kr\| ¡}|rŠ|  |d ¡dkrŠ|d }n.z ||}Wn t yˆtd|ƒ‚Yn0t||ƒ\} }| dur¦q| dvr,t||ƒ\} }| durÐtdƒ‚t||ƒ\} }| durðtdƒ‚| ddkrtdƒ‚| dkr|t| ƒ}n |t| ƒ}nì| dkrb|dkr|  |d ¡t vr|d }q6n¶| dkrœ| ¡} || kr|  |¡t vr|d }qtn|| dkrÒ|dkr|  |d ¡dvr|d }q¦nF| dkr | ¡} || kr|  |¡dvr|d }qän td| ƒ‚qŠt|dƒS)NrzEmpty bookmark ID!rlér\r]ÚselzTags arent here!réÿÿÿÿzUnexpected literal in '%s'Úinsertrprz.Unsupported base offset or undefined mark '%s')ú+r<z+/- operator needs 2 argsrYz+/- only supports charsrvZ wordstartZwordendZ linestartz Zlineendz Unsupported relative offset '%s')rqrOÚfindr"ÚGetSelr rNZ GetLineCountrgrhÚ IndexErrorÚ SCIGetCharAtÚKeyErrorÚ wordcharsÚmax) Zbmr ÚmarksÚbaseZ nextTokPosrjÚcolrsroZwordZnumZwhatrpr r r ÚTkIndexToOffsetçs‚                  rc@s eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd&dd„Z dd„Z dd„Z d'dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd S)(r,cCsd|_||_i|_dSr+)Úcalltipsr r~r/r r r r09szTkText.__init__cCs|jdurt|jƒ|_|jSr+)r‚rcr rar r r Úmake_calltip_windowJs  zTkText.make_calltip_windowcCst||j|jƒSr+)rr r~)r&r[r r r rXOszTkText._getoffsetcCs t||jƒSr+)rkr )r&Zoffr r r Ú _getindexRszTkText._getindexcCsÐ|dkr*t|j |¡ƒd@dkr*|d8}q||j ¡krZt|j |¡ƒd@dkrZ|d7}q*|dkrŽ|j |¡dkrŽ|j |d¡dkrŽ|d}||j ¡krÈ|j |d¡dkrÈ|j |¡dkrÈ|d}||fS)NréÀé€rrú )Úordr rzrg)r&Ústartrpr r r Ú _fix_indexesUs,   ÿþ ÿþý ÿþýzTkText._fix_indexescCs|jj ||¡dSr+)r r@rA)r&ZbindingZhandlerr r r rAzsz TkText.bindNcCs°z*| |¡}|dur|d}n | |¡}Wnty>YdS0||krLdS|j ¡}d}||krj|}d}| ||¡\}}|j ||¡}|r¤|rœ|ddkr¤|d}| dd¡S)Nrrrrtrr‡)rXr r rgrŠr!r?)r&r‰rpr}ZcheckEndrJr r r r=}s&    z TkText.getcCs,z| | |¡¡WSty&YdS0dS)Nr)r„rXr )r&Úspecr r r r[•s z TkText.indexcCs€z| |¡}Wnty(tdƒ‚Yn0|j ||f¡| d¡}|j |d¡|dd…D]}|j ¡|j |¡q`dS)Nú Empty rangerrr)rXr rr ÚSetSelr"Ú SCIAddTextZ SCINewline)r&rorÚbitsÚbitr r r ru›s   z TkText.insertcCsêz | |¡}|dur| |¡}Wnty:tdƒ‚Yn0||krHdS|durZ|d}n ||krfdS||j ¡krxdS|j ¡d}| ||¡\}}|j ||f¡|j ¡||krÆ||krÆ|}n||krÚ|||}|j |¡dS)NrŒrr) rXr rr rgrxrŠrZClear)r&r‰rpÚoldr r r Údelete©s.     z TkText.deletecCs t ¡dSr+)Úwin32apiZ MessageBeeprar r r ÚbellÇsz TkText.bellcCsdSr+r )r&ror r r ÚseeÊsz TkText.seecCsRz| |¡}Wnty,td|ƒ‚Yn0|dkrD|j |¡n ||j|<dS)NzEmpty range '%s'ru)rXr rr rr~)r&rEror r r Úmark_setÏs zTkText.mark_setcCsV|dkrtdƒ‚z| |¡}| |¡}WntyBtdƒ‚Yn0|j ||¡dS)NrszOnly sel tag is supportedrŒ)rOrXr rr r©r&rEr‰rpr r r Útag_addÙs  zTkText.tag_addcCs:|dks|dks|dkr tdƒ‚|j |j ¡d¡dS)Nrsz1.0rpzCant remove this tagr)rOr rrxr—r r r Ú tag_removeãszTkText.tag_removecCs^z| |¡}Wnty$d}Yn0z| |¡}WntyJd}Yn0td|||fƒS)Nrz%d%s%d)rXr Úeval)r&Zi1ÚopZi2r r r Úcompareés    zTkText.comparecCs|j ¡dSr+)r ZSCIBeginUndoActionrar r r Úundo_block_startôszTkText.undo_block_startcCs|j ¡dSr+)r ZSCIEndUndoActionrar r r Úundo_block_stop÷szTkText.undo_block_stop)N)N)rrrr0rƒrXr„rŠrAr=r[rur’r”r•r–r˜r™rœrržr r r r r,8s$%     r,cCs*t||iƒ}||kr&td|d|d|ƒdS)Nz ERROR: Indexz , expectedzbut got)rÚprint)r[r ÚexpectedrTr r r Ú TestChecks r¡cCs<| ||¡}||kr8tdt|ƒt|ƒt|ƒt|ƒfƒdS)Nz*ERROR: get(%s, %s) expected %s, but got %s)r=rŸÚrepr)ÚfrÚtoÚtr Zgotr r r ÚTestGets ÿÿr¦cCsŒddl}|jjj d¡}| ¡}t|ƒ}| d¡| d¡d}| d¡t dd|dƒ| d¡t dd|dƒ| d ¡t dd|dƒdS) Nrz/hi there how are you today I hope you are well)ér§a¥ TestCheck("insert", e, 4) TestCheck("insert wordstart", e, 3) TestCheck("insert wordend", e, 8) TestCheck("insert linestart", e, 0) TestCheck("insert lineend", e, 12) TestCheck("insert + 4 chars", e, 8) TestCheck("insert +4c", e, 8) TestCheck("insert - 2 chars", e, 2) TestCheck("insert -2c", e, 2) TestCheck("insert-2c", e, 2) TestCheck("insert-2 c", e, 2) TestCheck("insert- 2c", e, 2) TestCheck("1.1", e, 1) TestCheck("1.0", e, 0) TestCheck("2.0", e, 13) try: TestCheck("sel.first", e, 0) print "*** sel.first worked with an empty selection" except TextError: pass e.SetSel((4,5)) TestCheck("sel.first- 2c", e, 2) TestCheck("sel.last- 2c", e, 3) zinsert lineendzinsert lineend +1cr)ér¨)é#r©) Úpywin.framework.editorÚ frameworkÚeditorÚeditorTemplateÚOpenDocumentFileÚ GetFirstViewr,rŽrr¦)ÚpywinÚdÚer¥Úskipr r r Útests     r´c@seZdZdd„ZdS)Ú IDLEWrappercCs ||_dSr+)r)r&Zcontrolr r r r0;szIDLEWrapper.__init__N)rrrr0r r r r rµ:srµc Csžddl}ddl}d|}t|ƒ|j|}t|_t||ƒ}ddl}|jj j   d¡}|  ¡}|j  t¡dd} | t| ƒ ¡¡| d¡|tt|ƒƒƒ} | S)Nrr z.py)Úosrr rrrr3rªr«r¬r­r®r¯ÚpathÚsplitextÚ__file__rŽÚopenÚreadZSetModifiedFlagrµr,) rBr¶rrrrCr°r±ÚvÚfnameÚrr r r ÚIDLETest?s   r¿Ú__main__)N)!rmrr“rPrr°rZpywin.mfc.dialogrZascii_uppercaseZascii_lowercasernr|Ú Exceptionrr rr)ZIndentSearcherÚreadlineÚAttributeErrorr*rcrkrqrr,r¡r¦r´rµr¿rr r r r Ús:   p QI  +