Uname:Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64

403WebShell
403Webshell
Server IP : 3.111.61.48  /  Your IP : 216.73.216.67
Web Server : Apache
System : Linux ip-10-0-5-176 6.8.0-1057-aws #60~22.04.1-Ubuntu SMP Wed May 27 08:16:59 UTC 2026 x86_64
User : ubuntu ( 1000)
PHP Version : 8.2.31
Disable Function : exec,passthru,shell_exec,system
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /lib/python3.10/idlelib/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3.10/idlelib/__pycache__/editor.cpython-310.pyc
o

�9jQ�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlTddlm
Z
ddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddlm$Z$dZ%de�&�Z'ejdkZ(dd�Z)Gdd�d�Z*dd�Z+e�,d�Z-dd �Z.Gd!d"�d"�Z/d#d$�Z0d%d&d'd(�Z1d)d*�Z2d+d,�Z3d-d.�Z4e5d/kr�dd0l6m7Z7e7d1d2d3d4�dd5l8m9Z9e9e4�dSdS)6�N)�*)�Font)�	Scrollbar)�simpledialog)�
messagebox)�idleConf)�configdialog)�grep)�help)�
help_about)�macosx)�MultiCallCreator)�pyparse)�query)�replace)�search)�wheel_event)�
py_extensions)�window�z (%s)�darwincCsdtj\}}}}}d||f}|d|f7}|dkr"|d|f7}|S|dkr0|d|d|f7}|S)zYFormat sys.version_info to produce the Sphinx version string used to install the chm docsz%s%sz%s�	candidatezrc%s�finalr)�sys�version_info)�major�minor�micro�level�serial�release�r!�%/usr/lib/python3.10/idlelib/editor.py�_sphinx_version&s�r#c@s4eZdZddlmZddlmZmZddlm	Z	ddl
mZmZddl
mZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZmZmZmZddl m!Z!ddl"m#Z#e$�%�Z&dZ'dZ(dZ)dZ*d�dd�Z+d�dd�Z,dd�Z-dd�Z.dd�Z/dd�Z0d�dd�Z1gd �Z2d!d"�Z3d#d$�Z4d%d&�Z5d'd(�Z6d)d*�Z7dZ8d+d,�Z9d-gZ:d.d/�Z;d0d1�Z<d2d3�Z=d4d5�Z>d�d6d7�Z?d�d8d9�Z@d�d:d;�ZAd�d<d=�ZBd>d?�ZCd@dA�ZDdBdC�ZEd�dDdE�ZFd�dFdG�ZGdHdI�ZHdJdK�ZIdLdM�ZJdNdO�ZKdPdQ�ZLdRdS�ZMdTdU�ZNdVdW�ZOdXdY�ZPdZd[�ZQd\d]�ZRd�d^d_�ZSd�d`da�ZTd�dbdc�ZUddde�ZVdfdg�ZWdhdi�ZXdjdk�ZYdldm�ZZdndo�Z[dpdq�Z\drds�Z]e^j_e^j`dtZadudv�Zbdwdx�Zcdydz�Zdd{d|�Zed}d~�Zfdd��Zgd�d��Zhd�d��Zid�d�d��Zjd�d��Zkd�d��Zld�d��Zmd�d��Znd�d��Zod�d��Zpd�d��Zqd�d��Zrd�d�d��Zsd�d��Ztd�d�d��Zud�d��Zvd�d��Zwd�d��Zxd�d��Zyd�d��Zzd�d��Z{d�d��Z|d�d��Z}d�d��Z~d�d�iZd�d��Z�d�d�d��Z�d�d�d��Z�d�d��Z�d�d�d��Z�d�d�d��Z�d�d��Z�d�d��Z�d�dÄZ�d�dńZ�d�d�dDŽZ�d�dɄZ�d�d˄Z�d�d̈́Z�d�dτZ�d�dфZ�d�dӄZ�d�dՄZ�d�d�dׄZ�dS)��EditorWindowr)�
Percolator)�ColorDelegator�color_config)�
UndoDelegator)�	IOBinding�encoding)�mainmenu)�MultiStatusBar)�AutoComplete)�
AutoExpand)�Calltip)�CodeContext)�LineNumbers)�FormatParagraph�FormatRegion�Indents�Rstrip)�
ParenMatch)�
ZoomHeightNTcCs�	ddlm}tjdur�tj�tjdd�}tj	�
d�r:ddtjdd�}tj�d	�r.d
}n^d}tj�||dd�}nRtj	dd�dkrddl
}	d
}
dtj�d�}z	|	�|	j|�}
Wntyuz	|	�|	j|�}
Wn	tyrYnwYnwtj�|
�r~|
}n
tj	dkr�tj�tjd�}tj�|�}tj�|�r�|t_tj	dkr�dtjt_n
dtjdd�t_||_|p�|j}||_t|�|_tj||jd�|_}|r�|j|_|j|j_ni|_i|j_t j!o�tj�t j!d�|_"d
|_#t$|�|_%}
t&|
dd�|_'}t j(ddddd�}ddd d|d!t j(ddd"dd�d#�}t)t*�|
fi|��|_+}|j+|j_,|�-�|�.�|j�/d$|j0�|j�1d%|j2�t3�4��r]|�1d%|j2�|�1d&|j5�|�1d'|j5�n|�1d(|j5�|�1d)t6�|�1d*t6�|�1d+t6�|�1d,|j7�|�1d-|j8�|�1d.|j9�|�1d/|j:�|�1d0|j;�|�1d1|j<�|�1d2|j=�|�1d3|j>�|�1d4|j?�|�1d5|j@�|�1d6d7d8��|�1d9|jA�|�1d:|jB�|�1d;|jC�|�1d<|jD�|�1d=|jE�|�1d>|jF�|�1d?|jG�|�1d@|jH�|�1dA|jI�|�1dB|jJ�|�1dC|jK�|�L|�|_M}|�1dD|jN�|�1dE|jO�|�1dF|jP�|�1dG|jQ�|�1dH|jR�|�1dI|jS�|�T|�}|�1dJ|jU�|�1dK|jV�|�1dL|�Wd��|�1dM|�WdN��|�1dO|jX�|�1dP|jY�|�1dQ|jZ�|�r�||j|<|�r�||j[|<|�1dR|j\�|�1dS|jj]�|�1dT|j^�|�1dU|j_�|�1dV|j`�|�a�|
jbtctddNdW�|
jedNdNdX�|
jfdNdNdX�|jg|dY<|jhdNdtidZ�|jj|d[<t �k|jdd�|d\<|jhdNdNtidZ�|�l�|�m�t j(dd]d^d_d�}||_nd`|_o|jo|_p|�q�trt da��s|j+dbt _s|�t�dc|_u|�v|�|_w}|�x�|_y}|�z|�|j{|_{|j||_||�}|j~�|�|�|_�}|��|j��dd|_�|��dd�d|_�d|_�d|_�|�r�tj��|��r�tj�|��s�|��|��r�de|_�|��|�}|��|�n|��|�de|_�|���|�~�|���|���|j���df�}|�r�|��dg�}|du�r�dh}|dk�r�|���|dN}||_�t��|j��t�j�|_�t�j�|_�t�j�|_�|��didj�|��dkdldmdn�|��dodp�|��dqdr�|��dsdrdtdu�|��||j��}|�1di|j��|�1dk|j��|�1dv|j��|�1dw|��|�j��|�1dx|��|�j��|��|�}|�1dy|j��|�1ds|j��||�}|�1dz|j��|�1d{|j��|�1d||j��|�1d}|��|�j��|��|�|_�}|�1do|j��|�1dq|j��|�1d~|j��|�1d|��|�j��|j��r�|��|�|_�|�1d�|j�j��n|��d�d�d��|j��r�|��|�|_�t j(ddd�d_d��r�|���|�1d�|j��dS|��d�d�d��dS)�Nr)�
ScriptBinding�Docz
index.html�linuxzpython-docs-z%s.%s.%s�z/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/�win�zSoftware\Python\PythonCore\z\Help\Main Python Documentationrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/�)�menuzrecent-files.lst�vbar)�name�mainr$�width�int��type�text��none�
wordprocessor�height)rA�padx�wrap�highlightthicknessrC�tabstylerK�WM_DELETE_WINDOW�<<close-window>>z<Control-Button-1>z<2>z<3>z<MouseWheel>z
<Button-4>z
<Button-5>z<Configure>z<<cut>>z<<copy>>z	<<paste>>z<<center-insert>>z<<help>>z<<python-docs>>z<<about-idle>>z<<open-config-dialog>>�<<open-module>>z<<do-nothing>>cSsdS�N�breakr!��eventr!r!r"�<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>>�
<<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>>�<<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>>)�side�fill�expand)�weight�command)�row�column�sticky�yscrollcommand�font�Indentz
use-spaces�boolr�blink_off_time�
insertofftime)�2i�i@KLFTr�end���z<<autocomplete>>z	<Key-Tab>z<<try-open-completions>>z<KeyRelease-period>z<KeyRelease-slash>z<KeyRelease-backslash>z<<try-open-calltip>>z<KeyRelease-parenleft>z<<refresh-calltip>>z<KeyRelease-parenright>z<<paren-closed>>z<KeyRelease-bracketright>z<KeyRelease-braceright>z<<force-open-completions>>z<<expand-word>>z<<format-paragraph>>z<<flash-paren>>z<<check-module>>z<<run-module>>z<<run-custom>>z
<<do-rstrip>>z<<force-open-calltip>>z<<zoom-height>>z<<toggle-code-context>>�optionsz*ode*ontext�disabledzline-numbers-defaultz<<toggle-line-numbers>>�*ine*umbers)��idlelib.runscriptr8r$�help_url�os�path�joinr�base_prefix�platform�countr�isdir�winreg�winver�
QueryValue�HKEY_CURRENT_USER�FileNotFoundError�HKEY_LOCAL_MACHINE�isfile�normpath�flist�root�Menu�menubarr�ListedToplevel�top�vars�tkinter_vars�inversedict�
instance_dictr�userdir�recent_files_path�prompt_last_line�Frame�
text_framerr@�	GetOptionr
�TextrG�focused_widget�
createmenubar�apply_bindings�protocol�close�bind�close_eventr�isAquaTk�right_menu_eventr�handle_winconfig�cut�copy�paste�center_insert_event�help_dialog�python_docs�about_dialog�
config_dialog�open_module_event�
select_all�remove_selection�
find_event�find_again_event�find_in_files_event�find_selection_event�
replace_event�goto_line_event�smart_backspace_event�newline_and_indent_event�smart_indent_eventr3�fregion�indent_region_event�dedent_region_event�comment_region_event�uncomment_region_event�tabify_region_event�untabify_region_eventr4�toggle_tabs_event�change_indentwidth_event�move_at_edge_if_selection�
del_word_left�del_word_right�
home_callback�dict�new_callback�close_all_callback�open_module_browser�open_path_browser�open_turtle_demo�set_status_bar�pack�LEFT�BOTH�rowconfigure�columnconfigure�handle_yview�grid�NSEW�set�GetFont�	focus_set�	set_width�usetabs�tabwidth�indentwidth�set_notabs_indentwidth�hasattrrg�update_cursor_blink�num_context_linesr%�perr(�undo�insertfilter�undo_block_start�undo_block_stop�set_saved_change_hook�saved_change_hookr)�io�set_filename_change_hook�filename_change_hook�	good_load�set_indentation_params�color�code_context�line_numbers�exists�loadfile�ispythonsource�set_filename�ResetColorizer�update_recent_files_list�load_extensions�menudict�get�index�
add_separator�	wmenu_end�register_callback�postwindowsmenur�
askintegerr�askyesno�	showerror�	event_addr-�user_input_insert_tags�autocomplete_event�try_open_completions_event�force_open_completions_eventr.�expand_word_eventr2�format_paragraph_eventr6�flash_paren_event�paren_closed_event�check_module_event�run_module_event�run_custom_eventr5�	do_rstripr/�ctip�try_open_calltip_event�refresh_calltip_event�force_open_calltip_eventr7�zoom_height_event�allow_code_contextr0�toggle_code_context_event�update_menu_state�allow_line_numbersr1�toggle_line_numbers_event)�selfr��filename�keyr�r8�dochome�pyver�basepathrx�docfile�KEYr�r�r@rC�text_optionsrGr��indents�	usespacesr�r�r��	is_py_srcr?rj�autocomplete�
parenmatch�
scriptbindingrr!r!r"�__init__Is�

������

�
��

���







�



�



����
�
��zEditorWindow.__init__cCs|��dS�N)r��r
rVr!r!r"r�k�zEditorWindow.handle_winconfigcCs^|j}tt|jj|�d�|�d�g��}|��d|}t||�d�d��d�}|||_	dS)N�borderrLr>rd)rd�0)
rG�sum�map�tk�getint�cget�winfo_widthr�measurerC)r
rG�
inner_padding�pixel_width�zero_char_widthr!r!r"r�ns��zEditorWindow.set_widthcCs|j��\}}|j�|�dSrS)r��defaultfilenamer��new)r
rV�dirname�basenamer!r!r"r�{szEditorWindow.new_callbackcCs�|jd@dkr|jdkrdS|j�d�r2|j�ddd�r2|j�ddd�r2t|j�d��d�d	�}n|j�dd�}tt	|��D]
}||d
vrInq?t	|�}t|j�d��d�d	�}||krad}dt
|�d
}|jd	@dkry|j�ddd�nV|j�d�s�|j�dd�n|j�|j�d�d|j�d��r�|j�dd�n|j�dd�|j�|�}|j�d�}|j�|d|�r�||}}|j�ddd�|j�
d||�|j�d|�|j�d�dS)N�r�Home�iomark�<=zinsert lineend�insert linestart�.rZ)� �	�insertzinsert linestart+�c�sel�1.0rj�	sel.first�	my_anchor�<�sel.last�>rT)�state�keysymrGr��comparerD�splitr��range�len�str�
tag_remove�mark_set�tag_add�see)r
rV�insertpt�line�lineat�dest�first�lastr!r!r"r��sH���
�
zEditorWindow.home_callbackcCs�|�|j�|_t|jdddd�}tjdkr|jjddtd�|jjdd	td�|jjd
dtd�|jjt	t
d�|jt	t
d�|j�d
|j
�|j�d
dd�|j�|j
�dS)NrZ�grey75)rK�borderwidth�
backgroundr�	_padding1z    )r[razCol: ?rMzLn: ?)r[r\z<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)r,r��
status_barr�rru�	set_label�RIGHTr��BOTTOM�XrGr��set_line_and_columnr��
after_idle)r
�sepr!r!r"r��s
�zEditorWindow.set_status_barcCs>|j�t��d�\}}|j�dd|�|j�dd|�dS)Nr5razCol: %srMzLn: %s)rGr��INSERTrDrVrW)r
rVrMrar!r!r"r[�sz EditorWindow.set_line_and_column))�file�_File)�edit�_Edit)�format�F_ormat)�run�_Run)rl�_Options)r�_Window)r
�_HelpcCs�|j}i|_}|jD]'\}}t|�\}}t||�d�d�}t||d|d�||<}|j|||d�qt��rIt|ddd�|d<}|jd|d	�|�	�t|jdd
�|_
|jdjdd
d|j
d�|jd�t
�|_|��dS)N�_menu_postcommandr)rA�tearoff�postcommand)�labelr?�	underline�apple)rArk�application�IDLE)rmr?�rkr_r;zRecent Files)rmrnr?r
)r�r��
menu_specs�prepstr�getattrr��add_cascader�
isCarbonTk�
fill_menus�recent_files_menu�insert_cascader��END�base_helpmenu_length�reset_help_menu_entries)r
�mbarr�rArmrnrlr?r!r!r"r��s,
���zEditorWindow.createmenubarcCsJ|jd}|�d�}|durd}||jkr|�|jd|�t�|�dS)NrrjrkrZ)r�r�r��deleter�add_windows_to_menu)r
r?rjr!r!r"r��s


zEditorWindow.postwindowsmenucC�|j|}|j||d�dS)z$Update label for menu item at index.)rmN�r��entryconfig)r
r?r�rm�menuitemr!r!r"�update_menu_label��
zEditorWindow.update_menu_labelcCr�)z$Update state for menu item at index.�rANr�)r
r?r�rAr�r!r!r"r
�r�zEditorWindow.update_menu_statecGsT|dkrt|d�}t|�d�|�|�d�}d}|df}|jj|g|�R�dS)zHandle scrollbar.�movetorrj�@0,0�scroll�unitsrT)�float�round�	getlinenorG�yview)r
rV�args�fraction�linesr!r!r"r��s�zEditorWindow.handle_yviewc	Cs*|j}|�d|j�d|j���}z|�dd|�o|�|dd�}Wnty+d}Ynw|s;|�ddd	�|�d
|�|jsB|�	�|j}||_
tjdd�dk}|rY|j
d
d�|jD]%}z|\}}	}
Wn	tynYq\w|
durtq\t||
��}|j||d�q\|�|j|j�|r�|jj
dd�dS)N�@�,r<r3r?Fr:r;rjr8r;r<�arrow)�cursorr��ibeamrT)rGr��x�yrC�TclErrorrHrI�rmenu�
make_rmenurVrru�config�rmenu_specs�
ValueErrorru�entryconfigure�tk_popup�x_root�y_root)r
rVrG�newdex�in_selectionr��iswin�itemrm�	eventname�verify_staterAr!r!r"r�sB��
�zEditorWindow.right_menu_event)�CloserQNcCsft|jdd�}|jD]#}|d|d}}|dur)|j|fdd�}|j||d�q
|��q
||_dS)NrrrrZcS�|�|�dSr��event_generate�rGr�r!r!r"r_/�z(EditorWindow.make_rmenu.<locals>.command�rmr_)r�rGr��add_commandr�r�)r
r�r�rmr�r_r!r!r"r�*s


zEditorWindow.make_rmenucCs|��Sr)�rmenu_check_copy�r
r!r!r"�rmenu_check_cut6szEditorWindow.rmenu_check_cutcCs2z|j�d�}Wn
tyYdSw|rdSdS)Nr<rm�normal�rGr�r�)r
�indxr!r!r"r�9s�zEditorWindow.rmenu_check_copycCs0z
|jj�d|jd�WdStyYdSw)Nztk::GetSelection�	CLIPBOARDrmr�)rGr$�callr�r�r!r!r"�rmenu_check_pasteAs��zEditorWindow.rmenu_check_pastecC�t�|j�dS)zHandle Help 'About IDLE' event.rT)r�AboutDialogr�rr!r!r"r�IszEditorWindow.about_dialogcCst�|jd�dS)z&Handle Options 'Configure IDLE' event.�SettingsrT)r�ConfigDialogr�rr!r!r"r�OszEditorWindow.config_dialogcCs"|jr|j}n|j}t�|�dS)zHandle Help 'IDLE Help' event.rT)r�r�r
�
show_idlehelp)r
rV�parentr!r!r"r�Us

zEditorWindow.help_dialogc
Csrtjdd�dkr1z	t�|j�WdSty0}ztjdt|�|j	d�WYd}~dSd}~wwt
�|j�dS)Nr;r<�Document Start Failure��title�messager�rT)rrurq�	startfilerp�OSErrorrr�rGrG�
webbrowser�open)r
rV�whyr!r!r"r�_s�
���zEditorWindow.python_docscC�|j�d�dS)Nz<<Cut>>rT�rGr�rr!r!r"r�j�zEditorWindow.cutcCs |j�d�sdS|j�d�dS)Nr:z<<Copy>>rT)rG�
tag_rangesr�rr!r!r"r�nszEditorWindow.copycCs|j�d�|j�d�dS)Nz	<<Paste>>r8rT)rGr�rKrr!r!r"r�u�zEditorWindow.pastecCs.|j�ddd�|j�dd�|j�d�dS)Nr:r;zend-1cr8rT)rGrJrIrKrr!r!r"r�zszEditorWindow.select_allcCs |j�ddd�|j�d�dS)Nr:r;rjr8rT)rGrHrKrr!r!r"r��szEditorWindow.remove_selectioncs*|jj�|jj�d�����fdd�}|S)z�Cursor 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.

        )zsel.first+1czsel.last-1ccsD|jd@dkr z�d��d���WdStyYdSwdS)NrHrr<r8)rAr�rU��
edge_index�edges_table�self_text_index�self_text_mark_setr!r"�move_at_edge�s��z<EditorWindow.move_at_edge_if_selection.<locals>.move_at_edge)rGr�rI)r
r�r�r!r�r"r��s
z&EditorWindow.move_at_edge_if_selectioncCr�)Nz
<Meta-Delete>rTr�rr!r!r"r��r�zEditorWindow.del_word_leftcCr�)Nz<Meta-d>rTr�rr!r!r"r��r�zEditorWindow.del_word_rightcCr�rS)r�findrGrr!r!r"r��r�zEditorWindow.find_eventcCr�rS)r�
find_againrGrr!r!r"r��r�zEditorWindow.find_again_eventcCr�rS)r�find_selectionrGrr!r!r"r��r�z!EditorWindow.find_selection_eventcCst�|j|j|j�dSrS)r	rGr�r�rr!r!r"r��sz EditorWindow.find_in_files_eventcCst�|j�dSrS)rrGrr!r!r"r��r�zEditorWindow.replace_eventcCsT|j}t�|dd�j}|dur(|�ddd�|�d|�d��|�d�|��dS)	Nz
Go To Linez/Enter a positive integer
('big' = end of file):r:r;rjr8�.0rT)rGr�Goto�resultrHrIrKr[)r
rVrG�linenor!r!r"r��s��
zEditorWindow.goto_line_eventcCspz|j�dd���}Wntyd}Ynwt�|jdd|�j}|dur6|jr0|j�|�|S|j	�
|�|S)z�Get module name from user and open it.

        Return module path or None for calls by open_module_browser
        when latter is not invoked in named editor window.
        r<r?r=zOpen ModulezAEnter the name of a Python module
to search on sys.path and open:N)rGr��stripr�r�
ModuleNamer�r�r�r�r�)r
rA�	file_pathr!r!r"�open_module�s$����zEditorWindow.open_modulecC�|��dSrS)r�rr!r!r"r���zEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s|��}|durdSddlm}|�|j|�dS)N�PyShellEditorWindowrTr)�browser)	r�r�	__class__�__name__r��idlelibr��
ModuleBrowserr�)r
rVrr�r!r!r"r��s�z EditorWindow.open_module_browsercCsddlm}|�|j�dS)Nr)�pathbrowserrT)r�r��PathBrowserr�)r
rVr�r!r!r"r��r�zEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dd�dS)Nrz-cz,from turtledemo.__main__ import main; main()F)�shellrT)�
subprocessr�
executable�Popen)r
rVr��cmdr!r!r"r��s�zEditorWindow.open_turtle_democCsV|dur'|dkr)|j�dd|�|j�ddd�|j�ddd�|��dSdSdS)Nrr8z%d.0r:r;rjz
insert +1l)rGrIrHrJ�center)r
r�r!r!r"�gotoline�s�zEditorWindow.gotolinecCs`|rtj�|�r
dStj�tj�|��\}}tj�|�tvr dS|j�dd�}|�	d�o/d|vS)NTr;z1.0 lineendz#!�python)
rqrrrw�splitextr/�normcaserrGr��
startswith)r
r�base�extrMr!r!r"r��szEditorWindow.ispythonsourcecCs |jr|j�|�d|_dSdSr)r��unregister_maybe_terminater�r!r!r"�
close_hooks
�zEditorWindow.close_hookcCs
||_dSr)r�)r
r�r!r!r"�set_close_hook
�
zEditorWindow.set_close_hookcCs2|jr	|j�|�|��|j�|�|��dSr)r��filename_changed_editr�r��update_windowlist_registryr�r�r!r!r"r�s
z!EditorWindow.filename_change_hookcCsD|jrdS|�|jj�r|��|_|jr |jj|j|jd�dSdS)N)�filter�after)r�r�r�rr&r��insertfilterafterr�r�r!r!r"�
_addcolorizers
�zEditorWindow._addcolorizercCs,|jsdS|j��|j�|j�d|_dSr)r��removecolorsr��removefilterr�r!r!r"�_rmcolorizer s


zEditorWindow._rmcolorizercCsL|��|��t�|j�|jdur|j��|jdur$|j��dSdS)zUpdate the color themeN)	rrr$r'rGr��update_highlight_colorsr��
update_colorsr�r!r!r"r�'s


�zEditorWindow.ResetColorizer�_cCsp|�d|�|�|�}|r||jvr|�d|d|�d|�|�kr)|�d|�n|�d|d�|�|�dS)N�ERRORz
 wordstart�
r8z+1c)rJr��
IDENTCHARSrIrK)r
rG�pos�charr!r!r"�colorize_syntax_error6s
z"EditorWindow.colorize_syntax_errorcCs4tjddddd�}|sd|jd<dStj|jd<dS)	z&Update the cursor blink configuration.rBr$zcursor-blinkrfrErrhN)rr�rGrg)r
�cursorblinkr!r!r"r�As�z EditorWindow.update_cursor_blinkcCsN|jdur
|j��|jdur|j��t�|jdd�}||jd<|��dS)z.Update the text widgets' font if it is changedNrBr$rd)r��update_fontr�rr�r�rGr�)r
�new_fontr!r!r"�	ResetFontKs




zEditorWindow.ResetFontcCs|t��|j_}|��D]\}}|jj|g|�R�q|��D]}t�|�}|r;|��D]\}}|jj|g|�R�q,qdS)z/Remove the keybindings before they are changed.N)	r�GetCurrentKeySetr+�default_keydefs�itemsrG�event_delete�get_standard_extension_names�GetExtensionBindings)r
�keydefsrV�keylist�
extensionName�xkeydefsr!r!r"�RemoveKeybindings\s
��zEditorWindow.RemoveKeybindingsc
Cs>t��|j_}|��|��D]}t�|�}|r|�|�qi}|jjD]!}i||d<|dD]}|rE|d||dt|d�d<q1q%|j	D]R}|j	|}|�
t�}|dur[qJ|d7}td|�D]7}	|�
|	�dkr�|�|	d�}
|
r�|�|	d�}d}||vr�|||vr�|||}|r�t||�}
|j|	|
d�qdqJdS)	z-Update the keybindings after they are changedrrZNr_�acceleratorrmr=)r)rrr+rr�rr�menudefsrtr�r�r{rErF�	entrycget�get_acceleratorr�)
r
rrr�
menuEventDictr?r��menubarItemrjr��accel�itemNamerVr!r!r"�ApplyKeybindingshsH

� ��



���zEditorWindow.ApplyKeybindingscCs"|jstjddddd�|_dSdS)zCUpdate the indentwidth if changed and not using tabs in this windowrBrez
num-spacesrDrEN)r�rr�r�r�r!r!r"r��s

��z#EditorWindow.set_notabs_indentwidthcCs|t��}|jd}|�t�}||jkr|�|jd|�|r7|��|D]}|�|d�}|j	|d|d�q$||jd<dS)z3Update the additional help entries on the Help menur
rZrr�N)
r�GetAllExtraHelpSourcesListr�r�r{r|rr��"_EditorWindow__extra_help_callbackr�)r
�	help_list�helpmenu�helpmenu_length�entryr�r!r!r"r}�s


z$EditorWindow.reset_help_menu_entriesc�|f�fdd�	}|S)zCCreate a callback with the helpfile value frozen at definition timec
s�|�d�stj�|�}tjdd�dkr;zt�|�WdSty:}ztj	dt
|��jd�WYd}~dSd}~wwt�
|�dS)N)�www�httpr;r<r�r�)r�rqrrrrrur�r�rr�rGrGr�r�)�helpfiler�r�r!r"�display_extra_help�s

���z>EditorWindow.__extra_help_callback.<locals>.display_extra_helpr!)r
r.r/r!r�r"�__extra_help_callback�sz"EditorWindow.__extra_help_callbackc
s�g}|j}|r)tj�|�r)t|dddd��}|��}Wd�n1s$wY|rBtj�|�d}||vr<|�|�|�d|�g�|D]}d|vsVtj�|dd	��s[��	|�qF�fd
d�|D�}d}|dt
|��}|r�zt|d
ddd��
}|�|�Wd�n1s�wYWn*ty�}zt
|jdd�s�d|j_tjdd|�d�|jd�WYd}~nd}~ww|jjD]+}	|	j}
|
�dt�t|�D]\}}|��}|	�|�}
|
j||d||
dd�q�q�dS)z/Load and update the recent files list and menus�r�utf_8r)r*�errorsNrr�rkcsg|]}|�vr|�qSr!r!)�.0rr��	bad_pathsr!r"�
<listcomp>�sz9EditorWindow.update_recent_files_list.<locals>.<listcomp>�1234567890ABCDEFGHIJK�w�recentfiles_messageFTzIDLE Warningz)Cannot save Recent Files list to disk.
  z
Select OK to continue.r�r6)rmr_rn)r�rqrrr�r��	readlines�abspath�remover8�appendrF�
writelinesr�rur�r;r�showwarningrGr�r�ryrr{�	enumerate�rstrip�#_EditorWindow__recent_file_callbackr�)r
�new_file�rf_listr��rf_list_filerr�ulchars�rf_file�err�instancer?�i�	file_name�callbackr!r6r"r��sl�
�

��������	
���z%EditorWindow.update_recent_files_listcr+)Ncs�jj|d�dS)N)�editFile)r�r�)�
fn_closurer�r!r"�open_recent_file�sz=EditorWindow.__recent_file_callback.<locals>.open_recent_filer!)r
rMrQr!r�r"�__recent_file_callback�sz#EditorWindow.__recent_file_callbackcCs�|��}|��}|r|r|d|t}n|r|}n|r|}nd}|p&|p&|}|��s3d|}d|}|j�|�|j�|�dS)Nz - �untitledz*%s*z*%s)�short_title�
long_title�_py_version�	get_savedr��wm_title�wm_iconname)r
�short�longr��iconr!r!r"r��szEditorWindow.saved_change_hookcCs
|j��Sr)r�rWr�r!r!r"rW�r�zEditorWindow.get_savedcCs|j�|�dSr)r��	set_saved)r
�flagr!r!r"r]�szEditorWindow.set_savedcCs|j��dSr)r��
reset_undor�r!r!r"r_�r�zEditorWindow.reset_undocCs|jj}|rtj�|�SdS)NrS)r�rrqrrr/)r
rr!r!r"rTszEditorWindow.short_titlecCs|jjpdS)Nr=)r�rr�r!r!r"rUrzEditorWindow.long_titlecCr�rS)r�rr!r!r"r�r�z EditorWindow.center_insert_eventr8cCsH|j}|��\}}|�|�}||}td||d�}|�t|��dS)NrZr>)rG�getwindowlinesr��maxr�r�)r
�markrGr��botr�rK�newtopr!r!r"r�s
zEditorWindow.centercCsN|j}|�d�}|�d�}||kr#|��dkr#t|d�}||d}||fS)Nr�z@0,65535rZrK)rGr��winfo_heightrD)r
rGr�rcrKr!r!r"r`s

zEditorWindow.getwindowlinescCs|j}tt|�|���Sr)rGrDr�r�)r
rbrGr!r!r"r�szEditorWindow.getlinenocCs(|j��}t�d|�}ttt|����S)zReturn (width, height, x, y)z(\d+)x(\d+)\+(-?\d+)\+(-?\d+))r��wm_geometry�re�match�listr#rD�groups)r
�geom�mr!r!r"�get_geometry"s
zEditorWindow.get_geometrycCr�rS)r�rr!r!r"r�(r�zEditorWindow.close_eventcCsH|jr"|��s|j��dkr|j��|j��|j��|j��SdS)Nr�)r�rWr�rA�	deiconify�lower�lift�	maybesaver�r!r!r"rq,s



�zEditorWindow.maybesavecCs8z|��}t|�dkr|��|WStyYdSw)N�cancel)rqrG�_close�AttributeError)r
�replyr!r!r"r�5s�zEditorWindow.closecCs�|jjr|j|jjd�t�|j�|��|j��d|_d|_|j	r,|j	��d|_	d|_
d|_|j��d|_|j
��|jrH|��dSdS)N)rE)r�rr�r�unregister_callbackr��unload_extensionsr�r�r�rGr�r�r��destroyr�r�r!r!r"rs>s$



�zEditorWindow._closecCsi|_|��dSr)�
extensions�load_standard_extensionsr�r!r!r"r�RszEditorWindow.load_extensionscCs0t|j���D]}t|d�r|��qi|_dS)Nr�)riry�valuesr�r�)r
�insr!r!r"rwVs

�
zEditorWindow.unload_extensionscCs@|��D]}z|�|�Wqtdt|��t��YqdS)NzFailed to load extension)r�load_extension�print�repr�	traceback�	print_exc)r
rAr!r!r"rz\s�z%EditorWindow.load_standard_extensionscCstjdd�S)NT)�editor_only)r�
GetExtensionsr�r!r!r"rdrz)EditorWindow.get_standard_extension_names�ZzDummy�zzdummyc		CsN|j�||�}zztjd|td�}Wnttfy#t�|�}YnwWn
ty2td|��wt||�}t	�
|�}t|d�rI|�|j
|�||�}||j|<|r�|�|�|D]I}|�dd�}|dd�dkry|dd�}|dd�dksk|d	d�d
kr�|dd	�}|d	d�d
ks�|d}t||�r�|j�|t||��q[dSdS)Nr5)�packagez
Failed to import extension: r�-rrZr>rkr@�_event)�extfilesr��	importlib�
import_module�__package__�ImportError�	TypeErrorr~rurrr�rxrryr�rrGr�)	r
rA�fname�mod�clsrr|�vevent�
methodnamer!r!r"r}ksD��
�




��
��zEditorWindow.load_extensioncCsH|dur|jj}|j}||_|��D]\}}|r!|j|g|�R�qdSr)r+rrGrrr�)r
rrGrVrr!r!r"r��s��zEditorWindow.apply_bindingsc	Cs�|dur|jj}|dur|jj}|j}|j}|D]Z\}}|�|�}|s$q|D]K}|s/|��q&|\}	}
|	dd�dk}|rC|	dd�}	t|	�\}}	t||
�}
||
fdd�}|rh|�	|
t
�}|j|	|||
|d�q&|j|	|||
d�q&qdS)zAdd appropriate entries to the menus and submenus

        Menus that are absent or None in self.menudict are ignored.
        NrZ�!cSr�rr�r�r!r!r"r_�r�z(EditorWindow.fill_menus.<locals>.command)rmrnr_r�variable)rmrnr_r)
r+rrr�rGr�r�rtr�get_var_obj�
BooleanVar�add_checkbuttonr�)r
rrr�rG�mname�	entrylistr?r*rmr��checkbuttonrnrr_�varr!r!r"rx�s@


����zEditorWindow.fill_menuscCs"|�|�}|r
|��}|St|��r)r�r��	NameError)r
rAr��valuer!r!r"�getvar�s

zEditorWindow.getvarcCs&|�||�}|r|�|�dSt|��r)r�r�r�)r
rAr��vartyper�r!r!r"�setvar�szEditorWindow.setvarcCs,|j�|�}|s|r||j�|j|<}|Sr)r�r�rG)r
rAr�r�r!r!r"r��szEditorWindow.get_var_objcCs(|jr|j�d|�pd|j�|�vSdS)N�TODO�STRINGrZ)r�rG�
tag_prevrange�	tag_names)r
�
text_indexr!r!r"�is_char_in_string�s
�zEditorWindow.is_char_in_stringcCs8z|j�d�}|j�d�}||fWStyYdSw)Nr<r?�NNr�)r
rPrQr!r!r"�get_selection_indices�s
�z"EditorWindow.get_selection_indicescCs|jdpt}t|�S)N�tabs)rG�TK_TABWIDTH_DEFAULTrD)r
�currentr!r!r"�get_tk_tabwidth�szEditorWindow.get_tk_tabwidthc	CsF|j}|��|kr!|j�dd|dd|jd|�}|j|d�dSdS)Nrdr(z
-displayof�n)r�)rGr�r$r��master�	configure)r
�newtabwidthrG�pixelsr!r!r"�set_tk_tabwidth�s��zEditorWindow.set_tk_tabwidthcCsP|r |r |��}d|krdkrnn||_|j|jkr d|_|�|j�dS)Nr>rF)�guess_indentr�r�r�r�)r
r�guessrLr!r!r"r��sz#EditorWindow.set_indentation_paramsc
CsD|j}|��\}}|r|r|�||�|�d|�dS|�dd�}|dkr9|�ddd�r3|�d�dS|��dS|dd	vrF|�d�dS|j}t|�	|��}|d
ksVJ�|d|j
|j
}d
}		|dd�}|	d}	t|�	|��}||ks~|dd	vrnqc|��|�d
|	d�||kr�|�dd|||j
�|��dS)Nr8rTr4r=r@r;z	insert-1crk� 	rrZTz
insert-%dcr6)rGr�rrIr�rC�bellr�rF�
expandtabsr�r�r8r�r�)
r
rVrGrPrQ�charsr��have�want�
ncharsdeletedr!r!r"r�sH
�
��z"EditorWindow.smart_backspace_eventc
Cs|j}|��\}}|��zm|r1|r1t|�t|�kr%|j�|�W|��S|�||�|�d|�|�	dd�}t
||j�\}}|t|�krN|�
||j�n!|jrTd}nt|�|j��}|j}	d|	||	}|�d||j�|�d�W|��dS|��w)Nr8r4r7r6rT)rGr�r��
index2liner�r�r�rrIr��get_line_indentr�rF�reindent_tor�r�r�r8r�rK)
r
rVrGrPrQ�prefix�raw�	effective�padr�r!r!r"r�0s.
�
zEditorWindow.smart_indent_eventc	CsJ|j}|��\}}|���z�|r|r|�||�|�d|�|�dd�}dt|�}}||krD||dvrD|d7}||krD||dvs6||kr\|�dd|j�W|�	d�|�
�dS|d|�}d}|r~|d	dvr~|dd	�}|d7}|r~|d	dvsl|r�|�d
|d�|�d�dvr�|�d�|�d�dvs�|�dd|j�t|�d��}	t
�|j|j�}
|js�|jD],}t|	|d�}t|�d}
|�|
d�}|
�|�|
�|�|
��}|dus�|dkr�nq�|
�|p�d�n|�dd�}|r�|d}
nd
}
|�|
d�}|
�|�|
�d�|
��}|t
jk�rk|t
jk�rnB|t
jk�r,|�d||j�n3|t
jk�r:|�|
� ��n%|t
j!k�rX|
�"�dk�rP|�d||j�n|�|
�#��nJd|f��W|�	d�|�
�dS|
�$�}|�d||j�|
�%��r�|�&|�n
|�r�|
�'��r�|�(|�W|�	d�|�
�dS|�	d�|�
�w)a�Insert a newline and indentation after Enter keypress event.

        Properly position the cursor on the new line based on information
        from the current line.  This takes into account if the current line
        is a shell prompt, is empty, has selected text, contains a block
        opener, contains a block closer, is a continuation line, or
        is inside a string.
        r8r4rr�rZrrTNrkzinsert - %d charsr��consoler;zbogus continuation type %r))rGr�r�rrIr�rFr8r�rKr�r�r�r�Parserr�r�r�r�rar�set_code�find_good_parse_start�_build_char_in_string_func�set_lor��get_continuation_type�C_NONE�C_STRING_FIRST_LINE�C_STRING_NEXT_LINES�	C_BRACKETr��compute_bracket_indent�C_BACKSLASH�get_num_lines_in_stmt�compute_backslash_indent�get_base_indent_string�is_block_openerr��is_block_closerr�)r
rVrGrPrQrMrLr��indent�lnor��context�startat�startatindex�rawtext�bodr1r9r!r!r"r�Ss�	��
U��
�

��


�

�



�
z%EditorWindow.newline_and_indent_eventcCs||jfdd�}|S)NcSs||d|�S)Nz+%dcr!)�offset�_startindex�_icisr!r!r"�inner�sz6EditorWindow._build_char_in_string_func.<locals>.inner)r�)r
�
startindexr�r!r!r"r��s
�z'EditorWindow._build_char_in_string_funccCs.|jrt||j�\}}d|d|Sd|S)Nr7r6)r��divmodr�)r
r��ntabs�nspacesr!r!r"�_make_blanks�szEditorWindow._make_blankscCsN|j}|��|�ddd�r|�dd�|r!|�d|�|�|j�|��dS)Nr4z!=r8)rGr�rCrr8r�r�r�)r
rarGr!r!r"r��s�zEditorWindow.reindent_tocCsVt|j|j���\}}|r#|r#t||j�\}}t||j�\}}||Sd}}||S�Nr)�IndentSearcherrGr�rer�)r
�opener�indentedr��indentsmall�indentlarger!r!r"r��s�zEditorWindow.guess_indentcCsN|jdurdS|jjr|j��d}n|j��d}|jdd|�d�d�dS)N�Show�Hiderlrnz
 Line Numbers)r?r�rm)r��is_shown�hide_sidebar�show_sidebarr�)r
rV�
menu_labelr!r!r"r�s



�z&EditorWindow.toggle_line_numbers_event)NNNNr)r8r�)T)�r��
__module__�__qualname__�idlelib.percolatorr%�idlelib.colorizerr&r'�idlelib.undor(�idlelib.iomenur)r*r�r+�idlelib.statusbarr,�idlelib.autocompleter-�idlelib.autoexpandr.�idlelib.calltipr/�idlelib.codecontextr0�idlelib.sidebarr1�idlelib.formatr2r3r4r5�idlelib.parenmatchr6�idlelib.zoomheightr7r�getfilesystemencoding�filesystemencodingrprrr�rr�r�r�r�r�r[rsr�r�r�r
r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr��string�
ascii_letters�digitsr	rr�rrr$r�r}r&r�rDr�rWr]r_rTrUr�r�r`r�rmr�rqr�rsr�rwrzrr�r}r�rxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr!r!r!r"r$2s�

$
+

%�









			

$
.


		�

	%


	+#x
	r$cCstt|��Sr)rDr�)r�r!r!r"r�rr�z[ \t]*cCs$t�|�}|��t|���|��fS)z�Return a line's indentation as (# chars, effective # of spaces).

    The effective # of spaces is the length after properly "expanding"
    the tabs into spaces, as done by str.expandtabs(tabwidth).
    )�_line_indent_rerhrjrF�groupr�)rMr�rlr!r!r"r�s
r�c@s8eZdZdd�Zdd�Zejejdfdd�Zdd	�Z	d
S)r�cCs(||_||_d|_|_d|_|_dSr�)rGr�rL�finished�blkopenline�indentedline)r
rGr�r!r!r"r!szIndentSearcher.__init__cCsL|jrdS|jd}|_t|�d}|j�|dd�rdS|j�||d�S)Nr=rZr�z>=rjz lineend+1c)rrLrrGrCr�)r
rLrbr!r!r"�readline'szIndentSearcher.readline)�class�def�for�if�try�whilec		CsJ|jrdS||kr||vr||_dS||kr!|jr#||_d|_dSdSdS)NrZ)rr	r
)	r
rF�token�startrjrM�INDENT�NAME�OPENERSr!r!r"�
tokeneater0s

�zIndentSearcher.tokeneaterc	Csltj}|jt_z$zt�|j�}|D]}|j|�qWntjtfy&YnwW|t_n|t_w|j|j	fSr)
�tokenize�tabsizer��generate_tokensrr�
TokenError�SyntaxErrorr	r
)r
�save_tabsize�tokensrr!r!r"re<s���zIndentSearcher.runN)
r�r�r�rrrrrrrer!r!r!r"r�s

�r�cCs6|�d�}|dkr|d|�||dd�}||fS)NrrrZ)r�)�srLr!r!r"rtNs
rt�[�]�/)�bracketleft�bracketright�slashcCs�|�|�}|rt��r|dvrdS|d}t�ddd�|�}t�ddd�|�}t�d	d|�}t�d
d|�}t�dd
|�}t�dd|�}t�dd|�}t�dd|�}t�dd|�}|S)N>rXrRrYr=rz-[a-z]\bcSs|����Sr)r�upper�rlr!r!r"rWgsz!get_accelerator.<locals>.<lambda>z\b\w+\bcSst�|��|���Sr)�keynamesr�rr'r!r!r"rWhszKey-�Cancelz
Ctrl-BreakzControl-zCtrl-r��+z><r6r>r@)r�r�	isCocoaTkrg�sub)rr�rrr!r!r"r]s
rcCs4|j}|�ddd�|�ddd�|�ddd�dS)	N�tcl_wordBreakAfterza brr��
tcl_wordcharsz\w�tcl_nonwordcharsz\W)r$r�)r�r$r!r!r"�
fixwordbreaksssr0cCs~|}t|�tjdd�rtjd}nd}t�|d�t||d�}|j}d|d<td�D]}|�dd|t	|�d�q,dS)	NrZ)r�r�
rK�r8z  r)
r0r�argvr�setupAppr$rGrEr8rG)r�r�rrarGrLr!r!r"�_editor_window|s�r5�__main__)rBzidlelib.idle_test.test_editorr>F)�	verbosity�exit)re):�
importlib.abcr��importlib.utilrqrurgrrrr�r��tkinter�tkinter.fontr�tkinter.ttkrrr�idlelib.configrr�rr	r
rr�idlelib.multicallr
rrrr�idlelib.treer�idlelib.utilrrr��python_versionrVrr#r$r��compilerr�r�rtr(rr0r5r��unittestrB�idlelib.idle_test.htestrer!r!r!r"�<module>s~
d

4
�	�

Youez - 2016 - github.com/yon3zu
LinuXploit