a „oeÌ,ã@s°ddlZddlZddlZddlZddlZddlmZddlmZddl m Z d  d¡Z d  d¡Z e d   d¡¡Ze d ¡ZejZGd d „d eƒZGd d „d ƒZGdd„dƒZdS)éN)Údefault_scintilla_encoding)Údocviewé)Ú scintillaconz ÚasciiÚ zcoding[:=]\s*([-\w.]+)c@sÄeZdZdZdd„Zdd„Zdd„Zd/d d „Zd d „Zd d„Z d0dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„ZdS)1ÚCScintillaDocumentzA SyntEdit document.cGs"d|_d|_tj|g|¢RŽdS©N)ÚbomÚsource_encodingÚParentScintillaDocumentÚ__init__)ÚselfÚargs©rúCC:\Program Files\Certbot\pkgs\pythonwin\pywin\scintilla\document.pyr szCScintillaDocument.__init__cCsdSr r©rrrrÚDeleteContents#sz!CScintillaDocument.DeleteContentsc Csò| |¡z0t|dƒ}z| |¡W| ¡n | ¡0Wn²tyìt d|dtjtj B¡}|tj krrYdS|tj ks„J|ƒ‚z0t|dƒ}z| |¡W| ¡n | ¡0Wn2tyæ}zt d|¡}WYd}~n d}~00Yn0dS)NÚrbzBCould not load the file from %s Do you want to create a new file?Z Pythonwinrzwb+zCannot create the file %sr) Z SetPathNameÚopenÚ_LoadTextFromFileÚcloseÚIOErrorÚwin32uiZ MessageBoxÚwin32conZMB_YESNOZMB_ICONWARNINGZIDNOZIDYES)rÚfilenameÚfÚrcÚerrrÚOnOpenDocument&s2    ÿ ü   *z!CScintillaDocument.OnOpenDocumentNcCs&| ¡}|j||d}|r"| ¡|S)N)Úencoding)Ú GetFirstViewZ SaveTextFileZSCISetSavePoint)rZfileNamer ÚviewÚokrrrÚSaveFileFs zCScintillaDocument.SaveFilecCs| d¡dS)NÚApplyFormattingStyles)Ú_ApplyOptionalToViewsrrrrr%Msz(CScintillaDocument.ApplyFormattingStylesc Cs¾| ¡}| ¡}| t¡s$| t¡s,tj}ntj}tjdftj dftj dffD]2\}}|  |¡rN||_ ||_ |t|ƒd…}q¸qN||fD],}t |¡}|durŠ| d¡ d¡|_ q¸qŠ||| ¡} |j } | durÚd} z|  | ¡} WnRtytd| ƒ|  d¡} Yn*ty:td | ƒ|  d¡} Yn0|  t¡} | ¡} |  ¡rº|  tjd d ¡|  d ¡|  tj¡|  tj | ¡|  tjdd ¡|  t!j"d d ¡|  tj#|¡dS) NÚutf8Ú utf_16_leÚ utf_16_berrúutf-8zGWARNING: Failed to decode bytes from '%s' encoding - treating as latin1Úlatin1z=WARNING: Invalid encoding '%s' specified - treating as latin1r)$ÚreadlineÚendswithÚ crlf_bytesÚlf_bytesrZ SC_EOL_CRLFZ SC_EOL_LFÚcodecsÚBOM_UTF8Ú BOM_UTF16_LEÚ BOM_UTF16_BEÚ startswithr r ÚlenÚre_encoding_bytesÚsearchÚgroupÚdecodeÚreadÚ UnicodeErrorÚprintÚ LookupErrorÚencoderr!ZIsWindowZ SendScintillaZSCI_SETUNDOCOLLECTIONZ SetReadOnlyZ SCI_CLEARALLZ SendMessageZ SCI_ADDTEXTrZEM_EMPTYUNDOBUFFERZSCI_SETEOLMODE) rrÚlÚl2Zeol_moder r ÚlookÚmatchÚtextr Zdecr"rrrrSsbý    ÿÿÿÿ    z$CScintillaDocument._LoadTextFromFilec CsÊ| ¡}|}|durt|jr"|j}nFt d|d¡}|dd…D]*}t |¡}|dur<| d¡}||_qhq<|durtd}| |¡} t |dƒ} z(|jrœ|   |j¡|   | ¡W|   ¡n |   ¡0|  d¡dS)Nz[ ]+ééÿÿÿÿrr*Úwbr) Z GetTextRanger r ÚreÚsplitÚre_encoding_textr7r8r>rÚwriterÚSetModifiedFlag) rr"rr Úsr ÚbitsrArBZ file_contentsrrrrÚ_SaveTextToFile£s,      z"CScintillaDocument._SaveTextToFilecCsdSr r)rr"rrrÚFinalizeViewCreationÃsz'CScintillaDocument.FinalizeViewCreationcCs²| ¡}| t|dƒtj¡| t|dƒtj¡| t|dƒtj¡| t|dƒtj¡| t|dƒtj ¡| t|dƒtj ¡|  t j d¡|| ¡kr®| | ¡ ¡¡dS)NZ OnBraceMatchZ OnMarginClickZ OnNeedShownÚOnSavePointReachedÚOnSavePointLeftÚOnModifyAttemptROz()[]:;+-/*=\?'!#@$%^&,<>"'|)ÚGetParentFrameZ HookNotifyÚViewNotifyDelegaterZSCN_CHECKBRACEZSCN_MARGINCLICKZ SCN_NEEDSHOWNÚDocumentNotifyDelegateZSCN_SAVEPOINTREACHEDZSCN_SAVEPOINTLEFTZSCN_MODIFYATTEMPTROZ SCIAutoCStopsÚstringZ whitespacer!ZSCISetDocPointerZSCIGetDocPointer)rr"ÚparentrrrÚHookViewNotificationsÆs2 ÿ ÿ ÿþþþ z(CScintillaDocument.HookViewNotificationscCs| d¡dS)Nr©rK©rÚstdÚextrarrrrPäsz%CScintillaDocument.OnSavePointReachedcCs| d¡dS©NrrYrZrrrrQçsz"CScintillaDocument.OnSavePointLeftcCs | ¡dSr )ZMakeDocumentWritablerZrrrrRêsz$CScintillaDocument.OnModifyAttemptROcCs| ¡ |d|¡dSr])Ú GetEditorViewÚ SCIMarkerAdd©rÚlineNoÚmarkerrrrÚ MarkerAddîszCScintillaDocument.MarkerAddcCs*| ¡}|d}| |¡}|d|>@dkS)Nrr©r^Z SCIMarkerGet)rrarbÚvÚ markerStaterrrÚ MarkerCheckñs zCScintillaDocument.MarkerCheckcCs:| ¡}| ||¡r&| |d|¡n| |d|¡dSr])r^rgÚSCIMarkerDeleter_)rrarbrerrrÚ MarkerToggle÷s zCScintillaDocument.MarkerTogglecCs| ¡ |d|¡dSr])r^rhr`rrrÚ MarkerDeleteþszCScintillaDocument.MarkerDeletecCs| ¡ |¡dSr )r^ZSCIMarkerDeleteAll)rrbrrrÚMarkerDeleteAllsz"CScintillaDocument.MarkerDeleteAllcCs| ¡ |dd|>¡dSr])r^Z SCIMarkerNextr`rrrÚ MarkerGetNextsz CScintillaDocument.MarkerGetNextcCs| ¡ |d¡}|d|>@Sr]rd)rrarbrfrrrÚ MarkerAtLineszCScintillaDocument.MarkerAtLinecGs$| ¡D]}t||ƒ}||ŽqdSr ©Ú GetAllViewsÚgetattr©rZfuncNamerr"ÚfuncrrrÚ _ApplyToViews s  z CScintillaDocument._ApplyToViewscGs.| ¡D] }t||dƒ}|dur||ŽqdSr rnrqrrrr&s  z(CScintillaDocument._ApplyOptionalToViewscCs4z| ¡ ¡j}Wnty,| ¡YS0|ƒSr )r!rSr^ÚAttributeError)rZ frame_gevrrrr^s  z CScintillaDocument.GetEditorView)N)N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r rrr$r%rrNrOrXrPrQrRrcrgrirjrkrlrmrsr&r^rrrrrs.  P rc@seZdZdd„Zdd„ZdS)rTcCs||_||_dSr )ÚdocÚname©rryrzrrrr $szViewNotifyDelegate.__init__cCsB|\}}}|j ¡D](}| ¡|krt||jƒ||fŽSqdSr )ryroÚ GetSafeHwndrprz)rr[r\ÚhwndFromÚidFromÚcodererrrÚ__call__(s  zViewNotifyDelegate.__call__N©rurvrwr r€rrrrrT#srTc@seZdZdd„Zdd„ZdS)rUcCs||_t||ƒ|_dSr )ryrpÚdelegater{rrrr 1szDocumentNotifyDelegate.__init__cCs.|\}}}||j ¡ ¡kr*|j||fŽdSr )ryr^r|r‚)rr[r\r}r~rrrrr€5s zDocumentNotifyDelegate.__call__NrrrrrrU0srU)r0rGrVrrZpywinrZ pywin.mfcrÚrr>r.r/Úcompiler6rIZDocumentr rrTrUrrrrÚs"