File "EditorWindow.cpython-34.pyc"

Full Path: /home/attunedd/public_html/byp/izo/con7ext_sym404/rintoar.txt/opt/alt/python34/lib64/python3.4/idlelib/__pycache__/EditorWindow.cpython-34.pyc
File size: 51.43 KB
MIME-type: text/x-bytecode.python
Charset: 8 bit


e f@s^ddlZddlZddlZddlZddlZddlZddlZddlZddlTddl	j
Zddlj
ZddlZddlZddlmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZmZmZddlmZddlmZd
Z dej!Z"ddZ#Gddde$Z%e%Z&Gddde$Z'ddZ(ddZ)ddl*Z*e*Z+[*Gddde$Z,ddZ-idd6dd 6d!d"6Z.d#d$Z/d%d&Z0d'd(Z1e2d)krZdd*l3m4Z4e4e1ndS)+N)*)MultiCallCreator)
WindowList)SearchDialog)
GrepDialog)
ReplaceDialog)PyParse)idleConf)aboutDialogtextViewconfigDialog)
macosxSupport)helpz (%s)cCstj\}}}}}d||f}|d|f7}|dkrY|d|f7}n'|dkr|d|d|f7}n|S)zYFormat sys.version_info to produce the Sphinx version string used to install the chm docsz%s%sz%s	candidatezrc%sfinalr)sysversion_info)majorminormicrolevelserialreleaser9/opt/alt/python34/lib64/python3.4/idlelib/EditorWindow.py_sphinx_versionsrc@sReZdZddZdddZddZdd	Zdd
dZdS)
HelpDialogcCsd|_d|_dS)N)parentdlg)selfrrr__init__-s	zHelpDialog.__init__NcCs[ddl}|jdtdd|jdkrA|j|n|rW|j|ndS)z Display the help dialog.

            parent - parent widget for the help window

            near - a Toplevel widget (e.g. EditorWindow or PyShell)
                   to use as a reference for placing the help window
        rNzEditorWindow.HelpDialog is no longer used by Idle.
It will be removed in 3.6 or later.
It has been replaced by private help.HelpWindow

stacklevel)warningswarnDeprecationWarningrshow_dialog
nearwindow)r rnearwrrrdisplay1s	
zHelpDialog.displaycCsr||_tjjtjjtjjtd}tj|d|dd|_	}|j
d|jddS)Nzhelp.txtZHelpZmodalFz	<Destroy>+)rospathjoinabspathdirname__file__rZ	view_filerbinddestroy)r rfnrrrrr'Cs	-"zHelpDialog.show_dialogcCs\|j}|jd|jdf}|j|jd||j|jdS)N
z=+%d+%d)rZwinfo_rootxZwinfo_rootyZwithdrawZgeometry	deiconifylift)r r)rgeomrrrr(Is	 

zHelpDialog.nearwindowcCsd|_d|_dS)N)rr)r Zevrrrr4Ts	zHelpDialog.destroy)__name__
__module____qualname__r!r+r'r(r4rrrrr+s
rc@seZdZddlmZddlmZddlmZddl	m
Z
mZmZddl
mZddlmZddlmZd	Zd	d	d	d	d
dZdd
ZddZddZddZd	ddZdddddddgZd$d%Zd&d'Zd	Zd(d)ZdgZd,d-Z d.d/Z!d0d1Z"d2d3Z#d	d4d5Z$d	d6d7Z%d	d8d9Z&d	d:d;Z'd<d=Z(d>d?Z)d@dAZ*d	dBdCZ+d	dDdEZ,dFdGZ-dHdIZ.dJdKZ/dLdMZ0dNdOZ1dPdQZ2dRdSZ3dTdUZ4dVdWZ5d	dXdYZ6d	dZd[Z7d	d\d]Z8d	d^d_Z9d`daZ:dbdcZ;dddeZ<dfdgZ=dhdiZ>djdkZ?dldmZ@dndoZAeBjCeBjDdpZEdqdrZFdsdtZGdudvZHdwdxZIdydzZJd{d|ZKd}d~ZLd	ddZMddZNddZOddZPddZQddZRddZSddZTddZUdddZVddZWdddZXddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZaddZbd	ddZcd	d	ddZdddZed	ddZfd	ddZgddZhddZiddZjddZkdddZlddZmddZnddZoddZpddZqddZrddZsddZtddZuddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~d	S)EditorWindowr)
Percolator)ColorDelegator)
UndoDelegator)	IOBindingfilesystemencodingencoding)Bindings)Toplevel)MultiStatusBarNcCs	tjdkrtjjtjdd}tjjdrddtj	dd}tjj
drrd}qd	}tjj||dd}ntjddd
krtjjtjddt}tjj|r|}qn*tjdkrtjjtjd
}ntjj
|}tjj|rk|t_tjdkrdtjt_qqdtj	ddt_n||_|p|j}||_ytjWntk
rdt_YnXt||_tj|d|j|_}	|r$|j|_|j|j_ni|_i|j_tjjtjd|_t|	|_}
t |
dd|_!}tj"ddddd|_#idd6dd6dd6d d!6|j#d6tj"ddd"ddd"6}t$d#krd$|d%<nt%t&|
||_'}
|j'|j_(|j)|j*|jj+d&|j,|jj-d'|j.t/j0r|
j-d'|j.|
j-d(|j1|
j-d)|j1n|
j-d*|j1|
j-d+|j2|
j-d,|j3|
j-d-|j4|
j-d.|j5|
j-d/|j6|
j-d0|j7|
j-d1|j8|
j-d2|j9|
j-d3|j:|
j-d4d5d6|
j-d7|j;|
j-d8|j<|
j-d9|j=|
j-d:|j>|
j-d;|j?|
j-d<|j@|
j-d=|jA|
j-d>|jB|
j-d?|jC|
j-d@|jD|
j-dA|jE|
j-dB|jF|
j-dC|jG|
j-dD|jH|
j-dE|jI|
j-dF|jJ|
j-dG|jK|
j-dH|jL|
j-dI|jM|
j-dJ|jNd |
j-dK|jNdL|
j-dM|jO|
j-dN|jP|
j-dO|jQ|r||j|<|r||jR|<n|
j-dP|jS|
j-dQ|jjT|
j-dR|jU|
j-dS|jV|
j-dT|jWn|jX|
jY|dU<|jZdVt[dWt\|j]|
dX<tj^|jdd|
dY<|
jZdVt_dWt`dZdL|
jZdVtadWt`dZdL|
jbtj"dd[d\dd]}||_cd^|_d|jd|_e|jfd_|_gdf|_h|ji|
|_j}|jk|_l}|jm||jn|
_n|jo|
_o|jp|jq|jr||_s}|jt|jud_|_v|jwd_d|_x|rtjjy|rtjj
|r|jz|rdc|_v|j{|}|jw|qq|j||dc|_vn|j}|jq|j~|j|jjdd}|r	|jde}|dkr^	dg}n|d kr	|j|dL}n||_tj|jntj|_tj|_tj|_dS)hNZDocz
index.htmllinuxzpython-docs-z%s.%s.%sz/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/winzPython%s.chmdarwinz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/r#z>>> menuzrecent-files.lstnamevbarmainr=widthtypeinttextZpadxZnoneZwraprZhighlightthicknessheightg!@Z
wordprocessorZtabstyleZWM_DELETE_WINDOWz<<close-window>>z<Control-Button-1>z<2>z<3>z<<cut>>z<<copy>>z	<<paste>>z<<center-insert>>z<<help>>z<<python-docs>>z<<about-idle>>z<<open-config-dialog>>z<<open-module>>z<<do-nothing>>cSsdS)Nbreakr)eventrrr<lambda>sz'EditorWindow.__init__.<locals>.<lambda>z<<select-all>>z<<remove-selection>>z<<find>>z<<find-again>>z<<find-in-files>>z<<find-selection>>z<<replace>>z
<<goto-line>>z<<smart-backspace>>z<<newline-and-indent>>z<<smart-indent>>z<<indent-region>>z<<dedent-region>>z<<comment-region>>z<<uncomment-region>>z<<tabify-region>>z<<untabify-region>>z<<toggle-tabs>>z<<change-indentwidth>>z<Left>z<Right>z<<del-word-left>>z<<del-word-right>>z<<beginning-of-line>>z<<open-new-window>>z<<close-all-windows>>z<<open-class-browser>>z<<open-path-browser>>z<<open-turtle-demo>>commandsidefillZyscrollcommandfontexpandIndentz
use-spacesboolrF2@KLTwindowsend)r`rarb)r=help_urlr-r.r/rbase_prefixplatformcountrisdirrisfilenormpathflistrootps1AttributeErrorMenumenubarrZListedTopleveltopvarstkinter_varsZinversedict
instance_dictr	Z
GetUserCfgDirrecent_files_pathFrame
text_frameZ	ScrollbarrM	GetOptionrO	TkVersionrZTextrRZfocused_widget
createmenubarapply_bindingsZprotocolcloser3close_eventr
ZisAquaTkright_menu_eventcutcopypastecenter_insert_eventhelp_dialogpython_docsabout_dialog
config_dialogopen_module
select_allremove_selection
find_eventfind_again_eventfind_in_files_eventfind_selection_event
replace_eventgoto_line_eventsmart_backspace_eventnewline_and_indent_eventsmart_indent_eventindent_region_eventdedent_region_eventcomment_region_eventuncomment_region_eventtabify_region_eventuntabify_region_eventtoggle_tabs_eventchange_indentwidth_eventmove_at_edge_if_selection
del_word_leftdel_word_right
home_callbackdictnew_callbackZclose_all_callbackopen_class_browseropen_path_browseropen_turtle_demoset_status_baryviewpackRIGHTYsetGetFontZLEFTZBOTHZTOPZ	focus_setusetabstabwidthindentwidthset_notabs_indentwidthcontext_use_ps1num_context_linesr>perr@undoinsertfilterundo_block_startundo_block_stopZset_saved_change_hooksaved_change_hookrAioZset_filename_change_hookfilename_change_hookZ	good_loadset_indentation_paramscolorexistsloadfileispythonsourceZset_filenameResetColorizerupdate_recent_files_listload_extensionsmenudictgetindex
add_separator	wmenu_endZregister_callbackpostwindowsmenutkMessageBoxaskyesnotkSimpleDialog
askinteger	showerror)r rmfilenamekeyrnZdochomeZpyverZbasepathZchmfilersryrMZtext_optionsrRZ	usespacesrrr	is_py_srcrKrdrrrr!fs>				
	









	
		
	
	%	




	

	zEditorWindow.__init__cCst|trwy|j|j}Wqwtk
rsy|j|j}Wn!tk
rn|jd}YnXYqwXntjdd|S)z3Return filename as BMP unicode so diplayable in Tk.z	iso8859-1u[𐀀-􏿿]u�)
isinstancebytesdecoderBUnicodeDecodeErrorrCresub)r rrrr_filename_to_unicode?s

z!EditorWindow._filename_to_unicodecCs)|jj\}}|jj|dS)NrU)rZdefaultfilenamermnew)r rVr1basenamerrrrNszEditorWindow.new_callbackcCs||jd@dkr&|jdkr&dS|jjdr|jjdddr|jjdddrt|jjdjdd	}nR|jjdd}x:tt	|D]}||dkrPqqWt	|}t|jjdjdd	}||krd}nd
t
|d}|jd	@dkr\|jjdddn|jjds|jjddnY|jj|jjdd|jjdr|jjddn|jjdd|jj|}|jjd}|jj|d|r)||}}n|jjddd|jj
d|||jjd||jjddS)NrZHomeZiomarkz<=zinsert lineendzinsert linestart.rX 	insertzinsert linestart+cselz1.0rdz	sel.firstZ	my_anchor<zsel.last>rU)rr)stateZkeysymrRrcomparerQsplitrrangelenstr
tag_removemark_settag_addsee)r rVZinsertptlineZlineatdestfirstlastrrrrSs@"(%	zEditorWindow.home_callbackcCs|j|j|_t|jdddddd}tjdkra|jjddd	tn|jjd
dd	t|jjdd
d	t|jjd	t	dt
|jd	t	dt
|jjd|j
|jjddd|jj|j
dS)NrTrXZborderwidth
backgroundZgrey75rJZ	_padding1z    rZcolumnzCol: ?rzLn: ?r[z<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)rFrs
status_barrxrrh	set_labelrrZBOTTOMXrRr3set_line_and_column	event_addZ
after_idle)r seprrrr~s!
zEditorWindow.set_status_barcCsS|jjtjd\}}|jjdd||jjdd|dS)NrrzCol: %srzLn: %s)rRrZINSERTrrr)r rVrrrrrrs!z EditorWindow.set_line_and_columnfile_Fileedit_EditformatF_ormatrun_Runoptions_Optionsrc_Windowr_HelpcCs5|j}i|_}xe|jD]Z\}}t|\}}t|d|dd||<}|jd|d|d|q Wtjrt|dddd|d<}|jdd	d|n|jt|jdd|_	|jd
j
dddddd|j	|jd
jt|_
|jdS)NrLtearoffrlabelrK	underlineZappleZapplicationZIDLErrHzRecent Filesr)rrr
menu_specsprepstrrqZadd_cascader
Z
isCarbonTk
fill_menusrecent_files_menuZinsert_cascaderENDbase_helpmenu_lengthreset_help_menu_entries)r ZmbarrrLrrrKrrrr|s"	
  

zEditorWindow.createmenubarcCsk|jd}|jd}|dkr1d}n||jkrZ|j|jd|ntj|dS)NrcrdrXre)rrrdeleterZadd_windows_to_menu)r rKrdrrrrs
	zEditorWindow.postwindowsmenuc	
Cs,|jjdd|j|jf|js9|jn|j}||_tjdddk}|r|jj	ddnxs|j
D]h}y|\}}}Wntk
rwYnX|dkrqnt||}|j
|d|qW|j|j|j|r(|jj	ddndS)	Nrz@%d,%drHrIcursorZarrowrZibeam)rRrxyrmenu
make_rmenurVrrhconfigrmenu_specs
ValueErrorgetattrZentryconfigureZtk_popupZx_rootZy_root)	r rVrZiswinitemr	eventnameZverify_staterrrrrs(#	
		
zEditorWindow.right_menu_eventClose<<close-window>>cCst|jdd}xj|jD]_}|d|d}}|dk	rt|j|dd}|jd|d|q|jqW||_dS)NrrrXcSs|j|dS)N)event_generate)rRrrrrrYsz(EditorWindow.make_rmenu.<locals>.commandrrY)rqrRradd_commandrr)r rrrrrYrrrrszEditorWindow.make_rmenucCs
|jS)N)rmenu_check_copy)r rrrrmenu_check_cutszEditorWindow.rmenu_check_cutcCsAy|jjd}Wntk
r.dSYnX|r9dSdSdS)Nz	sel.firstdisablednormal)rRrTclError)r Zindxrrrrs

	zEditorWindow.rmenu_check_copycCsAy |jjjd|jdWntk
r8dSYnXdSdS)Nztk::GetSelectionZ	CLIPBOARDr!r")rRtkcallr#)r rrrrmenu_check_pastes
 
	zEditorWindow.rmenu_check_pastecCstj|jddS)zHandle Help 'About IDLE' event.z
About IDLEN)r
ZAboutDialogrs)r rVrrrrszEditorWindow.about_dialogcCstj|jddS)z&Handle Options 'Configure IDLE' event.ZSettingsN)rZConfigDialogrs)r rVrrrrszEditorWindow.config_dialogcCs/|jr|j}n	|j}tj|dS)zHandle Help 'IDLE Help' event.N)rnrsrZ
show_idlehelp)r rVrrrrrs		zEditorWindow.help_dialogcCstjdddkr}ytj|jWqtk
ry}z*tjdddt|d|j	WYdd}~XqXnt
j|jdS)NrHrItitlezDocument Start FailuremessagerrU)rrhr-	startfilerfOSErrorrrrrR
webbrowseropen)r rVwhyrrrrs,zEditorWindow.python_docscCs|jjddS)Nz<<Cut>>rU)rRr)r rVrrrrszEditorWindow.cutcCs*|jjdsdS|jjddS)Nrz<<Copy>>rU)rRZ
tag_rangesr)r rVrrrrszEditorWindow.copycCs$|jjd|jjddS)Nz	<<Paste>>rrU)rRrr)r rVrrrr%szEditorWindow.pastecCs=|jjddd|jjdd|jjddS)Nrz1.0zend-1crrU)rRrrr)r rVrrrr*szEditorWindow.select_allcCs*|jjddd|jjddS)Nrz1.0rdr)rRrr)r rVrrrr0szEditorWindow.remove_selectioncs=|jj|jjdfdd}|S)zCursor move begins at start or end of selection

        When a left/right cursor key is pressed create and return to Tkinter a
        function which causes a cursor move from the associated edge of the
        selection.

        sel.first+1csel.last-1ccsN|jd@dkrJyddWqJtk
rFYqJXndS)NrSrz	sel.firstr)rr#)rV)
edge_indexedges_tableself_text_indexself_text_mark_setrrmove_at_edge?s

z<EditorWindow.move_at_edge_if_selection.<locals>.move_at_edge)r.r/)rRrr)r r0r4r)r0r1r2r3rr4s
z&EditorWindow.move_at_edge_if_selectioncCs|jjddS)Nz
<Meta-Delete>rU)rRr)r rVrrrrHszEditorWindow.del_word_leftcCs|jjddS)Nz<Meta-d>rU)rRr)r rVrrrrLszEditorWindow.del_word_rightcCstj|jdS)NrU)rfindrR)r rVrrrrPszEditorWindow.find_eventcCstj|jdS)NrU)rZ
find_againrR)r rVrrrrTszEditorWindow.find_again_eventcCstj|jdS)NrU)rZfind_selectionrR)r rVrrrrXsz!EditorWindow.find_selection_eventcCs tj|j|j|jdS)NrU)rZgreprRrrm)r rVrrrr\sz EditorWindow.find_in_files_eventcCstj|jdS)NrU)rreplacerR)r rVrrrr`szEditorWindow.replace_eventcCsp|j}tjddd|}|dkr1dS|dkrK|jdS|jdd||jddS)NZGotozGo to line number:rrUrrz%d.0)rRrrbellrr)r rVrRlinenorrrrds		
zEditorWindow.goto_line_eventc!Csy|jjdd}Wntk
r3d}Yn
X|j}tjddd|jd|}|rv|j}n|sdSytjj|}WnNt	t
fk
r}z(tjdt
|d|jdSWYdd}~XnX|dkrtjdd	d|jdSt|jtjjsEtjdd
d|jdSy|jj|}Wn/tk
rtjddd|jdSYnX|jr|jj|n|jj||S)Nz	sel.firstzsel.lastZModulezAEnter the name of a Python module
to search on sys.path and open:rinitialvaluezImport errorzmodule not foundznot a source-based modulez$loader does not support get_filename)rRrr#striprZ	askstring	importlibutil	find_specrImportErrorrrrrloaderabcSourceLoaderget_filenamerprmr,rr)r rVrLspecmsgZ	file_pathrrrrpsH
	


	
		zEditorWindow.open_modulecCs|jj}|jjdko!|sC|j}|dkrCdSntjj|\}}tjj|\}}ddl	m
}|j
|j||gdS)NZPyShellEditorWindowr)ClassBrowser)rr	__class__r:rr-r.rsplitextidlelibrFrm)r rVrheadtailbaseextrFrrrrszEditorWindow.open_class_browsercCs$ddlm}|j|jdS)Nr)PathBrowser)rIrNrm)r rVrNrrrrszEditorWindow.open_path_browsercCs5ddl}tjddg}|j|dddS)Nrz-cz,from turtledemo.__main__ import main; main()shellF)
subprocessr
executablePopen)r rVrPcmdrrrrs
	zEditorWindow.open_turtle_democCsl|dk	rh|dkrh|jjdd||jjddd|jjddd|jndS)Nrrz%d.0rz1.0rdz
insert +1l)rRrrrcenter)r r8rrrgotolines
zEditorWindow.gotolinecCs|stjj|rdStjjtjj|\}}tjj|dkr]dS|jjdd}|jdod|kS)	NT.py.pywz1.0z1.0 lineendz#!python)rVrW)	r-r.rjrHrnormcaserRr
startswith)r rrLrMrrrrrs$zEditorWindow.ispythonsourcecCs)|jr%|jj|d|_ndS)N)rmZunregister_maybe_terminate)r rrr
close_hooks	zEditorWindow.close_hookcCs
||_dS)N)r[)r r[rrrset_close_hookszEditorWindow.set_close_hookcCsD|jr|jj|n|j|jj||jdS)N)rmZfilename_changed_editrrsZupdate_windowlist_registryr)r rrrrs
	
z!EditorWindow.filename_change_hookcCs}|jr
dS|j|jjr4|j|_n|jry|jj|j|jj|j|jj|jndS)N)	rrrrr?rremovefilterrr)r rrr
_addcolorizers		zEditorWindow._addcolorizercCs:|js
dS|jj|jj|jd|_dS)N)rZremovecolorsrr])r rrr_rmcolorizers
	
zEditorWindow._rmcolorizercCs|j|jtj}tj|d}tj|ddd}tj|d}|jjd|dd|dd|d	|dd
|dtdkr|jjd|dnd
S)zUpdate the color themer"rZfgBgZfgZhiliteZ
foregroundrZinsertbackgroundZselectforegroundZselectbackgroundg!@ZinactiveselectbackgroundN)r_r^r	ZCurrentThemeZGetHighlightrRrr{)r ZthemeZ
normal_colorsZcursor_colorZ
select_colorsrrrrs




zEditorWindow.ResetColorizer_cCs|jd||j|}|rN||jkrN|jd|d|nd|j|krv|jd|n|jd|d|j|dS)NZERRORz
 wordstart
rz+1c)rr
IDENTCHARSrr)r rRposcharrrrcolorize_syntax_errorsz"EditorWindow.colorize_syntax_errorcCs#tj|jdd|jd<dS)z.Update the text widgets' font if it is changedrNr=r\N)r	rrnrR)r rrr	ResetFontszEditorWindow.ResetFontcCstj|j_}x-|jD]\}}|jj||q#Wx\|jD]N}tj|}|rSx0|jD]\}}|jj||q{WqSqSWdS)z/Remove the keybindings before they are changed.N)	r	GetCurrentKeySetrDdefault_keydefsitemsrRZevent_deleteget_standard_extension_namesGetExtensionBindings)r keydefsrVkeylist
extensionNamexkeydefsrrrRemoveKeybindingsszEditorWindow.RemoveKeybindingsc
Cstj|j_}|jx9|jD]+}tj|}|r-|j|q-q-Wi}xd|jjD]V}i||d<x?|dD]3}|r|d||dt|dd<qqWqoWx	|j	D]}|j	|}|j
t}|dkrqn|d7}xtd|D]}	|j
|	dkr!|j|	d}
|
r|j|	d}d}||kr|||kr|||}qn|rt||}
|j|	d|
qqq!q!WqWdS)z-Update the keybindings after they are changedrrXNrYacceleratorrr9)r	rgrDrhr}rjrkmenudefsr	rrrrrPZ	entrycgetget_acceleratorZentryconfig)
r rlrnroZ
menuEventDictrKrZmenubarItemrdrZaccelZitemNamerVrrrApplyKeybindingss<
/

zEditorWindow.ApplyKeybindingscCs.|js*tjddddd|_ndS)zCUpdate the indentwidth if changed and not using tabs in this windowrNr^z
num-spacesrPrQN)rr	rzr)r rrrr;s	z#EditorWindow.set_notabs_indentwidthcCstj}|jd}|jt}||jkrQ|j|jd|n|r|jx>|D]3}|j|d}|j	d|dd|qhWn||jd<dS)z3Update the additional help entries on the Help menurrXrrrYN)
r	ZGetAllExtraHelpSourcesListrrrr
rr"_EditorWindow__extra_help_callbackr)r Z	help_listZhelpmenuZhelpmenu_lengthentryrSrrrrBs


!z$EditorWindow.reset_help_menu_entriescs|fdd}|S)zCCreate a callback with the helpfile value frozen at definition timecs|jd	s$tjj|}ntjdddkrytj|Wqtk
r}z*tj	dddt
|djWYdd}~XqXn
tj
|dS)
NwwwhttprHrIr'zDocument Start Failurer(r)rwrx)rZr-r.rlrrhr)r*rrrrRr+r,)helpfiler-)r rrdisplay_extra_helpUs,z>EditorWindow.__extra_help_callback.<locals>.display_extra_helpr)r ryrzr)r rZ__extra_help_callbackSsz"EditorWindow.__extra_help_callbackcszg}tjj|jrQt|jddddd}|j}WdQXn|rtjj|d}||kr|j|n|jd|ngxG|D]?}d	|kstjj|ddrj	|qqWfdd|D}d
}|dt
|}y8t|jddddd}|j|WdQXWn{tk
r}z[t
|jddsd|j_tjdddd|jt|d|jnWYdd}~XnXx|jjD]}|j}	|	jdtxlt|D]^\}
}|j}|j|}|j|}
|	jd||
d|d|
ddqWqWdS)z/Load and update the recent files list and menusrrCutf_8errorsr6NrarrXcs"g|]}|kr|qSrr).0r.)	bad_pathsrr
<listcomp>ss	z9EditorWindow.update_recent_files_list.<locals>.<listcomp>Z1234567890ABCDEFGHIJKr*recentfilelist_error_displayedFTr'zIDLE Warningr(z|Cannot update File menu Recent Files list. Your operating system says:
%s
Select OK and IDLE will continue without updating.rrrrYrre)r-r.rrwr,	readlinesr0removerappendr
writelinesr*rrnrrshowwarningrrrRrsrvrrr	enumeraterstrip#_EditorWindow__recent_file_callbackr)r new_fileZrf_listZrf_list_filer.ZulcharsZrf_fileerrinstancerKi	file_nameZ
ufile_namecallbackr)rrrbsL
) 	z%EditorWindow.update_recent_files_listcs|fdd}|S)Ncsjjd|dS)NZeditFile)rr,)Z
fn_closure)r rropen_recent_filesz=EditorWindow.__recent_file_callback.<locals>.open_recent_filer)r rrr)r rZ__recent_file_callbacksz#EditorWindow.__recent_file_callbackcCs|j}|j}|r9|r9|d|t}n$|rH|}n|rW|}nd}|pl|pl|}|jsd|}d|}n|jj||jj|dS)Nz - Untitledz*%s*z*%s)short_title
long_title_py_version	get_savedrsZwm_titleZwm_iconname)r ZshortZlongr'Ziconrrrrs		

zEditorWindow.saved_change_hookcCs
|jjS)N)rr)r rrrrszEditorWindow.get_savedcCs|jj|dS)N)r	set_saved)r ZflagrrrrszEditorWindow.set_savedcCs|jjdS)N)r
reset_undo)r rrrrszEditorWindow.reset_undocCs:|jj}|r'tjj|}nd}|j|S)Nr)rrr-r.rr)r rrrrrs
zEditorWindow.short_titlecCs|j|jjpdS)Nr9)rrr)r rrrrszEditorWindow.long_titlecCs|jdS)N)rT)r rVrrrrsz EditorWindow.center_insert_eventrcCsb|j}|j\}}|j|}||}td||d}|jt|dS)NrXr#)rRgetwindowlines	getlinenomaxrfloat)r markrRrsbotr8rTZnewtoprrrrTs	
zEditorWindow.centercCsp|j}|jd}|jd}||krf|jdkrft|d}||d}n||fS)Nz@0,0z@0,65535rXrT)rRrZwinfo_heightrQ)r rRrsrrTrrrrs	zEditorWindow.getwindowlinescCs"|j}tt|j|S)N)rRrQrr)r rrRrrrrs	zEditorWindow.getlinenocCs:|jj}tjd|}ttt|jS)zReturn (width, height, x, y)z(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rsZwm_geometryrmatchlistmaprQgroups)r r9mrrrget_geometryszEditorWindow.get_geometrycCs|jdS)N)r~)r rVrrrrszEditorWindow.close_eventcCsh|jrd|jsW|jjdkr:|jjn|jj|jjn|jjSdS)Nr")rrrsrr7lowerr8	maybesave)r rrrrs	
zEditorWindow.maybesavecCs/|j}t|dkr+|jn|S)NZcancel)rr_close)r Zreplyrrrr~s
zEditorWindow.closecCs|jjr%|jd|jjntj|j|j|jjd|_d|_|j	r|j	jdd|_	nd|_
d|_|jjd|_|j
j|jr|jndS)NrF)rrrrZunregister_callbackrunload_extensionsr~rrrRrurrsr4r[)r rrrrs"

					
	
	zEditorWindow._closecCsi|_|jdS)N)
extensionsload_standard_extensions)r rrrrs	zEditorWindow.load_extensionscCsIx9t|jjD]"}t|dr|jqqWi|_dS)Nr~)rrvalueshasattrr~)r insrrrrszEditorWindow.unload_extensionscCsTxM|jD]?}y|j|Wq
tdt|tjYq
Xq
WdS)NzFailed to load extension)rjload_extensionprintrepr	traceback	print_exc)r rLrrrrsz%EditorWindow.load_standard_extensionscCstjddS)NZeditor_onlyT)r	Z
GetExtensions)r rrrrjsz)EditorWindow.get_standard_extension_namescCsyKytjd|dt}Wn'ttfk
rItj|}YnXWn"tk
rotd|YnXt||}tj|}t	|dr|j
|j|n||}||j|<|r|j
|x|D]}|jdd}x*|dddkr*|dd}qWx*|ddd	krW|dd}q.W|d
}t	||r|jj|t||qqWndS)
Nrpackagez
Failed to import extension: rr-r`rXrrZ_eventrere)r<
import_module__package__r?	TypeErrorrrr	rkrr
rrrr}r6rRr3)r rLmodclsrlrZveventZ
methodnamerrrrs2





zEditorWindow.load_extensioncCsg|dkr|jj}n|j}||_x3|jD]%\}}|r:|j||q:q:WdS)N)rDrhrRrlrir)r rlrRrVrmrrrr}2s		zEditorWindow.apply_bindingsc
Csu|dkr|jj}n|dkr6|jj}n|j}|j}x&|D]\}}|j|}|svqOnx|D]}|s|jq}|\}	}
|	dddk}|r|	dd}	nt|	\}}	t||
}
||
dd}|rG|j	|
t
}|jd|	d|d|d	|
d
|q}|jd|	d|d|d	|
q}WqOWdS)zAdd appropriate entries to the menus and submenus

        Menus that are absent or None in self.menudict are ignored.
        NrX!cSs|j|dS)N)r)rRrrrrrYTsz(EditorWindow.fill_menus.<locals>.commandrrrYrqZvariable)
rDrrrhrrRrrr	rsget_var_objZ
BooleanVarZadd_checkbuttonr)r rrrlrrRZmnameZ	entrylistrKrvrrZcheckbuttonrrqrYvarrrrr
;s8		


zEditorWindow.fill_menuscCs5|j|}|r%|j}|St|dS)N)rr	NameError)r rLrvaluerrrgetvar`s
zEditorWindow.getvarcCs8|j||}|r(|j|nt|dS)N)rrr)r rLrvartyperrrrsetvarhszEditorWindow.setvarcCs@|jj|}|r<|r<||j|j|<}n|S)N)rurrR)r rLrrrrrros
zEditorWindow.get_var_objcCs<|jr4|jjd|p3d|jj|kSdSdS)NZTODOSTRINGrX)rrR
tag_prevrangeZ	tag_names)r Z
text_indexrrris_char_in_strings	zEditorWindow.is_char_in_stringcCsOy2|jjd}|jjd}||fSWntk
rJdSYnXdS)Nz	sel.firstzsel.last)NN)rRrr#)r rrrrrget_selection_indicess
z"EditorWindow.get_selection_indicescCs|jdpt}t|S)Ntabs)rRTK_TABWIDTH_DEFAULTrQ)r Zcurrentrrrget_tk_tabwidthszEditorWindow.get_tk_tabwidthcCs^|j}|j|krZ|jjdd|dd|jd|}|jd|ndS)Nr\Zmeasurez
-displayofnr)rRrr$r%ZmasterZ	configure)r ZnewtabwidthrRZpixelsrrrset_tk_tabwidths		
zEditorWindow.set_tk_tabwidthTcCsu|ra|ra|j}d|ko/dknr@||_n|j|jkrad|_qan|j|jdS)Nr#rF)guess_indentrrrr)r rZguessrrrrrsz#EditorWindow.set_indentation_paramscCs|j}|j\}}|rK|rK|j|||jd|dS|jdd}|dkr|jdddr|jdn
|jdS|dd	kr|jddS|j}t|j	|}|d
kst
|d|j|j}|jr't
jjdd}	nd}	d
}
xc||	krFPn|dd}|
d}
t|j	|}||ks|dd	kr6Pq6q6W|j|jd|
d||kr|jdd
||n|jdS)NrrUzinsert linestartr9rz1.0z	insert-1crXz 	rraz
insert-%dcrrererere)rRrrrrrr7rr
expandtabsAssertionErrorrrrrorrrr)r rVrRrrcharsrZhaveZwantlast_line_of_promptZ
ncharsdeletedrrrrsJ	

		


z"EditorWindow.smart_backspace_eventc

CsH|j}|j\}}|jz|r||r|t|t|krY|j|S|j|||jd|n|jdd}t||j	\}}|t
|kr|j||jnU|j
rd}n3t
|j|j	}|j}	d|	||	}|jd||jddSWd|jXdS)Nrzinsert linestartrrrU)rRrr
index2linerrrr
classifywsrrreindent_torrrrrr)
r rVrRrrprefixraw	effectiveZpadrrrrrs,	

			
zEditorWindow.smart_indent_eventcCs|j}|j\}}|jz|rW|rW|j|||jd|n|jdd}dt|}}x*||kr||dkr|d}qW||kr|jdddS|d|}d}tj	j
dd
}	x@|r7|ddkr7||	kr7|dd}|d}qW|rU|jd|dnx&|jddkr}|jdqXW|jddt|jd}
t
j|j|j}|jsjx|jD]}t|
|d}
t|
d	}|j|d}|j||j|j|j|}|dk	sL|
dkrPqqW|j|pcdnW|jd
d}|r|d}nd}|j|d}|j||jd|j}|t
jkr|t
jkrn|t
jkr|jd|n|t
jkr5|j|j nc|t
j!kr|j"dkri|jd|q|j|j#ndst$d|fdS|j%}|jd||j&r|j'|n"|r|j(r|j)|ndSWd|j*d|j+XdS)Nrzinsert linestartrz 	rXrarUzinsert - %d charsz.0Zconsolez1.0zbogus continuation type %rrerere),rRrrrrrrrrrorrrrZParserrrrrrrZset_strZfind_good_parse_start_build_char_in_string_funcZset_lorZget_continuation_typeZC_NONEZC_STRING_FIRST_LINEZC_STRING_NEXT_LINESZ	C_BRACKETrZcompute_bracket_indentZC_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentrZget_base_indent_stringZis_block_openerrZis_block_closerrrr)r rVrRrrrrrindentrZlnorcontextZstartatZstartatindexZrawtextZbodr{rrrrrs	
%	




z%EditorWindow.newline_and_indent_eventcCs||jdd}|S)NcSs||d|S)Nz+%dcr)offsetZ_startindexZ_icisrrrinnerosz6EditorWindow._build_char_in_string_func.<locals>.inner)r)r Z
startindexrrrrrnsz'EditorWindow._build_char_in_string_funcc
Cs|j\}}}}xstt|D]_}||}|r+t||j\}}	|	|j}	|j|	||d||<q+q+W|j||||dS)NrU)
get_regionrrrrr_make_blanks
set_region)
r rVrJrKrlinesrcrrrrrrrts

(z EditorWindow.indent_region_eventc
Cs|j\}}}}x|tt|D]h}||}|r+t||j\}}	t|	|jd}	|j|	||d||<q+q+W|j||||dS)NrrU)	rrrrrrrrr)
r rVrJrKrrrcrrrrrrrs
(z EditorWindow.dedent_region_eventcCsk|j\}}}}x6tt|dD]}||}d|||<q/W|j||||dS)NrXz##)rrrr)r rVrJrKrrrcrrrrrs

z!EditorWindow.comment_region_eventcCs|j\}}}}xtt|D]x}||}|sGq+n|dddkrp|dd}n)|dddkr|dd}n|||<q+W|j||||dS)Nr#z##rX#)rrrr)r rVrJrKrrrcrrrrrs
z#EditorWindow.uncomment_region_eventc
Cs|j\}}}}|j}|dkr4dSx{tt|D]g}||}|rGt||\}	}
t|
|\}}d|d|||	d||<qGqGW|j||||dS)Nrr)r_asktabwidthrrrdivmodr)
r rVrJrKrrrrcrrrntabsnspacesrrrrs
+z EditorWindow.tabify_region_eventcCs|j\}}}}|j}|dkr4dSx1tt|D]}||j|||<qGW|j||||dS)N)rrrrrr)r rVrJrKrrrrcrrrrsz"EditorWindow.untabify_region_eventcCsZ|jddd
|jdd|jdd	d
|jrV|j|_d|_ndS)NzToggle tabsz
Turn tabs onoffz?
Indent width will be
remains atz 8.z!
 Note: a tab is always 8 columnsrrrU)rr)rr)rrrRr)r rVrrrrs!
zEditorWindow.toggle_tabs_eventcCs_|jddd|jd|jdddd}|r[||jkr[|jr[||_nd	S)
NzIndent widthz6New indent width (2-16)
(Always use 8 when using tabs)rr:minvaluer#maxvaluerU)rrRrr)r rVrrrrrs			z%EditorWindow.change_indentwidth_eventcCs|j}|j\}}|rP|rP|j|d}|j|d}n|jd}|jd}|j||}|jd}||||fS)Nz
 linestartz-1c lineend +1czinsert linestartzinsert lineend +1cra)rRrrrr)r rRrrrJrKrrrrrrs	zEditorWindow.get_regioncCs|j}dj|}||kr2|jdS|jddd|jd||j|j|||j|||j|j	d|ddS)Nrarz1.0rdr)
rRr/r7rrrrrrr)r rJrKrrrRnewcharsrrrrs	


zEditorWindow.set_regioncCs=|jr1t||j\}}d|d|Sd|SdS)Nrr)rrr)r rrrrrrrs	zEditorWindow._make_blankscCsk|j}|j|jdddr;|jddn|r]|jd|j|n|jdS)Nzinsert linestartz!=r)rRrrrrrr)r rrRrrrrs	
zEditorWindow.reindent_tocCs.|jddd|jd|jddddS)	Nz	Tab widthzColumns per tab? (2-16)rr:rr#rr)rrRr)r rrrrs		zEditorWindow._asktabwidthcCsrt|j|jj\}}|r`|r`t||j\}}t||j\}}n
d}}||S)Nr)IndentSearcherrRrrr)r ZopenerZindentedrZindentsmallZindentlargerrrrs!
zEditorWindow.guess_indent)zfiler)zeditr)zformatr)zrunr)rr)zwindowsr)zhelpr)rrN)r:r;r<Zidlelib.Percolatorr>Zidlelib.ColorDelegatorr?Zidlelib.UndoDelegatorr@Zidlelib.IOBindingrArBrCrIrDtkinterrEZidlelib.MultiStatusBarrFrfr!rrrrrrr|rrrrrr rr&rrrrrrrrrrrrrrrrrrrrrrrUrr[r\rr^r_rstringZ
ascii_lettersZdigitsrbrerfrprtrrrurrrrrrrrrrTrrrrrr~rrrrrjrr}r
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr=[s+	
		+	$.	
		%	0#k


	r=cCstt|S)N)rQr)rrrrrsrcCstd}}x]|D]U}|dkr:|d}|d}q|dkre|d}||d|}qPqW||fS)NrrrXrr)srrrZchrrrr$s




rc@sOeZdZddZddZejejdddZd
dZ	dS)rcCs6||_||_d|_|_d|_|_dS)Nr)rRrrfinishedblkopenlineindentedline)r rRrrrrr!<s		zIndentSearcher.__init__cCsd|jr
dS|jd}|_t|d}|jj|ddrMdS|jj||dS)Nr9rXz.0z>=rdz lineend+1c)rrrrRrr)r rrrrrreadlineBs	zIndentSearcher.readlineclassdefforiftrywhilec		Cs^|jrnN||kr0||kr0||_n*||krZ|jrZ||_d|_ndS)NrX)rrr)	r rPtokenstartrdrINDENTNAMEZOPENERSrrr
tokeneaterKs		zIndentSearcher.tokeneatercCstj}|jt_zVy4tj|j}x|D]}|j|q4WWntjtfk
riYnXWd|t_X|j|j	fS)N)
	_tokenizetabsizergenerate_tokensrr
TokenErrorSyntaxErrorrr)r Zsave_tabsizetokensrrrrrWs	
	
zIndentSearcher.runN)zclasszdefzforzifztryzwhile)
r:r;r<r!rrrrrrrrrrr5s
	rcCsJ|jd}|dkr@|d|||dd}n||fS)Nr`rrX)r5)rrrrrr	is%r	[Zbracketleft]Zbracketright/ZslashcCs	|j|}|s.tjr2|dkr2dS|d}tjddd|}tjd	d
d|}tjdd|}tjdd
|}tjdd|}tjdd|}tjdd|}tjdd|}tjdd|}|S)N<<open-module>>
<<goto-line>><<change-indentwidth>>r9rz-[a-z]\bcSs|jjS)N)groupupper)rrrrrWsz!get_accelerator.<locals>.<lambda>z\b\w+\bcSstj|j|jS)N)keynamesrr)rrrrrWszKey-ZCancelz
Ctrl-BreakzControl-zCtrl-rr,z><rrr>r	rr
)rr
Z	isCocoaTkrr)rlrrmrrrrrsxs"	
rscCsF|j}|jddd|jddd|jddddS)	NZtcl_wordBreakAfterza brrZ
tcl_wordcharsz[a-zA-Z0-9_]Ztcl_nonwordcharsz
[^a-zA-Z0-9_])r$r%)rnr$rrr
fixwordbreakss	rcCsx|}t|tjddr3tjd}nd}tj|dtd|d|}|jjd|jdS)NrXrnrz<<close-all-windows>>)	rrargvr
ZsetupAppr=rRr3r)rrnrrrrr_editor_windows
r__main__)r)5r<Z
importlib.abcimportlib.utilr-rhrrrrZtkinter.simpledialogZsimpledialogrZtkinter.messageboxZ
messageboxrrr+Zidlelib.MultiCallrrIrrrrrZidlelib.configHandlerr	r
rrr
rrZpython_versionrrobjectrZ
helpDialogr=rrtokenizerrr	r
rsrrr:Zidlelib.idle_test.htestrrrrr<module>sd
-	
4