Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/idlelib/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/idlelib/__pycache__/editor.cpython-39.opt-2.pyc

a

��g��@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/k�r�dd0l6m7Z7e7d1d2d3d4�dd5l8m9Z9e9e4�dS)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)�darwincCsbtj\}}}}}d||f}|d|f7}|dkrB|d|f7}n|dkr^|d|d|f7}|S)Nz%s%sz%s�	candidatezrc%s�finalr)�sys�version_info)�major�minor�micro�level�serial�release�r!�*/usr/local/lib/python3.9/idlelib/editor.py�_sphinx_version&sr#c@s<eZdZddlmZddlmZmZddlm	Z	ddl
mZmZddl
mZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZmZmZmZddl m!Z!ddl"m#Z#ddl$m%Z%e&�'�Z(dZ)dZ*dZ+d�dd�Z,d�dd�Z-dd�Z.dd�Z/dd�Z0dd�Z1d�dd �Z2gd!�Z3d"d#�Z4d$d%�Z5d&d'�Z6d(d)�Z7d*d+�Z8dZ9d,d-�Z:d.gZ;d/d0�Z<d1d2�Z=d3d4�Z>d5d6�Z?d�d7d8�Z@d�d9d:�ZAd�d;d<�ZBd�d=d>�ZCd?d@�ZDdAdB�ZEdCdD�ZFd�dEdF�ZGd�dGdH�ZHdIdJ�ZIdKdL�ZJdMdN�ZKdOdP�ZLdQdR�ZMdSdT�ZNdUdV�ZOdWdX�ZPdYdZ�ZQd[d\�ZRd]d^�ZSd�d_d`�ZTd�dadb�ZUd�dcdd�ZVdedf�ZWdgdh�ZXdidj�ZYdkdl�ZZdmdn�Z[dodp�Z\dqdr�Z]dsdt�Z^e_j`e_jaduZbdvdw�Zcdxdy�Zddzd{�Zed|d}�Zfd~d�Zgd�d��Zhd�d��Zid�d��Zjd�d�d��Zkd�d��Zld�d��Zmd�d��Znd�d��Zod�d��Zpd�d��Zqd�d��Zrd�d��Zsd�d�d��Ztd�d��Zud�d�d��Zvd�d��Zwd�d��Zxd�d��Zyd�d��Zzd�d��Z{d�d��Z|d�d��Z}d�d��Z~d�d��Zd�d�iZ�d�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�dȄ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)�Squeezer)�
ZoomHeightNTcCsL	ddlm}tjdu�rtj�tjdd�}tj	�
d�rvddtjdd�}tj�d	�r^d
}q�d}tj�||dd�}nVtj	dd�dkr�tj�tjdd
t
��}	tj�|	�r�|	}ntj	dkr�tj�tjd�}tj�|�}tj�|��r|t_tj	dk�rdtjt_ndtjdd�t_||_|�p*|j}||_t|�|_tj||jd�|_}
|�rl|j|_|j|j_ni|_i|j_tj�o�tj�tjd�|_d|_t|
�|_ }t!|dd�|_"}tj#ddddd�}
dddd|
d tj#ddd!dd�d"�}t$t%�|fi|��|_&}|j&|j_'|�(�|�)�|j�*d#|j+�|j�,d$|j-�t.�/��rx|�,d$|j-�|�,d%|j0�|�,d&|j0�n|�,d'|j0�|�,d(t1�|�,d)t1�|�,d*t1�|�,d+|j2�|�,d,|j3�|�,d-|j4�|�,d.|j5�|�,d/|j6�|�,d0|j7�|�,d1|j8�|�,d2|j9�|�,d3|j:�|�,d4|j;�|�,d5d6d7��|�,d8|j<�|�,d9|j=�|�,d:|j>�|�,d;|j?�|�,d<|j@�|�,d=|jA�|�,d>|jB�|�,d?|jC�|�,d@|jD�|�,dA|jE�|�,dB|jF�|�G|�|_H}|�,dC|jI�|�,dD|jJ�|�,dE|jK�|�,dF|jL�|�,dG|jM�|�,dH|jN�|�O|�}|�,dI|jP�|�,dJ|jQ�|�,dK|�Rd��|�,dL|�RdM��|�,dN|jS�|�,dO|jT�|�,dP|jU�|�r ||j|<|�r�||jV|<|�,dQ|jW�|�,dR|jjX�|�,dS|jY�|�,dT|jZ�|�,dU|j[�|�\�|j]t^t_dMdV�|j`dMdMdW�|jadMdMdW�|jb|dX<|jcdMdtddY�|je|dZ<t�f|jdd�|d[<|jcdMdMtddY�|�g�|�h�tj#dd\d]d^d�}||_id_|_j|jj|_k|�l�tmtd`��s�|j&dat_n|�o�db|_p|�q|�|_r}|�s�|_t}|�u|�|jv|_v|jw|_w|�x|jy�|�z|�|_{}|�||j}�dc|_~|�dc�d|_�d|_�d|_�|�r�tj��|��r�tj�|��s�|��|��r�dd|_~|��|�}|�|�n|��|�dd|_~|���|�y�|���|���|j���de�}|�rT|��df�}|du�r(dg}|dk�rB|���|dM}||_�t��|j��t�j�|_�t�j�|_�t�j�|_�|��dhdi�|��djdkdldm�|��dndo�|��dpdq�|��drdqdsdt�|��|�}|�,dh|j��|�,dj|j��|�,du|j��|�,dv|��|�j��|�,dw|��|�j��|��|�}|�,dx|j��|�,dr|j��||�}|�,dy|j��|�,dz|j��|�,d{|j��|�,d||��|�j��|��|�|_�}|�,dn|j��|�,dp|j��|�,d}|j��|�,d~|��|�j��|j��r�|��|�|_�|�,d|j�j��n|��d�d�d��|j��	r:|��|�|_�tj#ddd�d^d��	r*|���|�,d�|j��n|��d�d�d��dS)�Nr)�
ScriptBindingZDocz
index.html�linuxzpython-docs-z%s.%s.%s�z/var/www/html/python/z/var/www/html/python/index.htmlz/usr/share/doc/�winzPython%s.chmrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/�)�menuzrecent-files.lst��vbar)�name�mainr$�width�int��type�text�ZnoneZ
wordprocessor�height)rA�padx�wrapZhighlightthicknessrCZtabstylerIZWM_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>��z'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)Zweight�command)�row�columnZstickyZyscrollcommand�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)�Zidlelib.runscriptr9r$�help_url�os�path�joinr�base_prefix�platform�countr�isdirr#�isfile�normpath�flist�root�Menu�menubarrZListedToplevel�top�vars�tkinter_varsZinversedict�
instance_dictrZuserdir�recent_files_path�prompt_last_line�Frame�
text_framerr@�	GetOptionr
�TextrGZfocused_widget�
createmenubar�apply_bindings�protocol�close�bind�close_eventrZisAquaTk�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_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr4Ztoggle_tabs_eventZchange_indentwidth_event�move_at_edge_if_selection�
del_word_left�del_word_right�
home_callback�dict�new_callbackZclose_all_callback�open_module_browser�open_path_browser�open_turtle_demo�set_status_bar�packZLEFTZBOTHZrowconfigureZcolumnconfigure�handle_yviewZgridZNSEW�set�GetFontZ	focus_set�	set_width�usetabs�tabwidth�indentwidth�set_notabs_indentwidth�hasattrr`�update_cursor_blink�num_context_linesr%�perr(�undo�insertfilter�undo_block_start�undo_block_stopZset_saved_change_hook�saved_change_hookr)�ioZset_filename_change_hook�filename_change_hookZ	good_load�set_indentation_params�color�code_context�line_numbers�exists�loadfile�ispythonsourceZset_filename�ResetColorizer�update_recent_files_list�load_extensions�menudict�get�index�
add_separator�	wmenu_endZregister_callback�postwindowsmenurZ
askintegerrZaskyesno�	showerror�	event_addr-Zautocomplete_eventZtry_open_completions_eventZforce_open_completions_eventr.Zexpand_word_eventr2Zformat_paragraph_eventr6Zflash_paren_eventZparen_closed_eventZcheck_module_eventZrun_module_eventZrun_custom_eventr5Z	do_rstripr/�ctipZtry_open_calltip_eventZrefresh_calltip_eventZforce_open_calltip_eventr8Zzoom_height_event�allow_code_contextr0Ztoggle_code_context_event�update_menu_state�allow_line_numbersr1�toggle_line_numbers_event)�selfrr�filename�keyrsr9ZdochomeZpyverZbasepathZchmfilervr}r@rCZtext_optionsrGr��indentsZ	usespacesr�r�r��	is_py_srcr>rcZautocompleteZ
parenmatchZ
scriptbindingr�r!r!r"�__init__Is�
��

��
���







�






��
��
�
��zEditorWindow.__init__cCs|��dS�N)r��r�rQr!r!r"r�aszEditorWindow.handle_winconfigcCs^|j}tt|jj|�d�|�d�g��}|��d|}t||�d�d��d�}|||_	dS)NZborderrJr=r])r]�0)
rG�sum�map�tkZgetintZcgetZwinfo_widthr�measurerC)r�rGZ
inner_paddingZpixel_widthZzero_char_widthr!r!r"r�ds��zEditorWindow.set_widthcCs|j��\}}|j�|�dSrN)r�Zdefaultfilenamerr�new)r�rQ�dirname�basenamer!r!r"r�qszEditorWindow.new_callbackcCs�|jd@dkr|jdkrdS|j�d�rd|j�ddd�rd|j�ddd�rdt|j�d��d�d	�}n8|j�dd�}tt	|��D]}||d
vr~q�q~t	|�}t|j�d��d�d	�}||kr�d}dt
|�d
}|jd	@dkr�|j�ddd�n�|j�d��s|j�dd�n@|j�|j�d�d|j�d���rB|j�dd�n|j�dd�|j�|�}|j�d�}|j�|d|��r�||}}|j�ddd�|j�
d||�|j�d|�|j�d�dS)N�rZHomeZiomark�<=zinsert lineend�insert linestart�.rV)� �	�insertzinsert linestart+�c�sel�1.0rc�	sel.firstZ	my_anchor�<�sel.last�>rO)�stateZkeysymrGr��comparerD�splitr��range�len�str�
tag_remove�mark_set�tag_add�see)r�rQZinsertpt�lineZlineat�dest�first�lastr!r!r"r�vsF��
�
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)NrVZgrey75)rIZborderwidthZ
backgroundrZ	_padding1z    )rWr\zCol: ?r�zLn: ?)rWrXz<<set-line-and-column>>z<KeyRelease>z<ButtonRelease>)r,rv�
status_barr|rrm�	set_labelZRIGHTr�ZBOTTOM�XrGr��set_line_and_columnr�Z
after_idle)r��sepr!r!r"r��s
�zEditorWindow.set_status_barcCs>|j�t��d�\}}|j�dd|�|j�dd|�dS)Nr�r\zCol: %sr�zLn: %s)rGr�ZINSERTr�r�r)r�rQr�r\r!r!r"r�sz EditorWindow.set_line_and_column))�fileZ_File)�editZ_Edit)�formatZF_ormat)�runZ_Run)reZ_Options)rZ_Window)r
Z_HelpcCs�|j}i|_}|jD]N\}}t|�\}}t||�d�d�}t||d|d�||<}|j|||d�qt��r�t|ddd�|d<}|jd|d	�|�	�t|jdd
�|_
|jdjdd
d|j
d�|jd�t
�|_|��dS)NZ_menu_postcommandr)rA�tearoff�postcommand)�labelr>�	underlineZapple)rArZapplicationZIDLE)r
r>�rrr;zRecent Files)r
rr>r
)rur��
menu_specs�prepstr�getattrrtZadd_cascaderZ
isCarbonTk�
fill_menus�recent_files_menuZinsert_cascader��END�base_helpmenu_length�reset_help_menu_entries)r�Zmbarr�rAr
rr	r>r!r!r"r��s,
���zEditorWindow.createmenubarcCsJ|jd}|�d�}|dur d}||jkr<|�|jd|�t�|�dS)NrrcrdrV)r�r�r��deleterZadd_windows_to_menu)r�r>rcr!r!r"r��s


zEditorWindow.postwindowsmenucCs|j|}|j||d�dS)N)r
�r��entryconfig)r�r>r�r
�menuitemr!r!r"�update_menu_label�s
zEditorWindow.update_menu_labelcCs|j|}|j||d�dS)N�r�r)r�r>r�r�rr!r!r"r��s
zEditorWindow.update_menu_statecGsT|dkr<t|d�}t|�d�|�|�d�}d}|df}|jj|g|�R�dS)NZmovetorrc�@0,0ZscrollZunitsrO)�float�round�	getlinenorG�yview)r�rQ�argsZfraction�linesr!r!r"r��s�zEditorWindow.handle_yviewc	Cs0|j}|�d|j�d|j���}z |�dd|�o<|�|dd�}WntyVd}Yn0|sv|�ddd	�|�d
|�|js�|�	�|j}||_
tjdd�dk}|r�|j
d
d�|jD]N}z|\}}	}
Wnty�Yq�Yn0|
dur�q�t||
��}|j||d�q�|�|j|j�|�r,|jj
dd�dS)N�@�,r�r�r�Fr�r�rcr�r;r<Zarrow)ZcursorrZibeamrO)rGr��x�yr��TclErrorr�r��rmenu�
make_rmenurQrrmZconfig�rmenu_specs�
ValueErrorrZentryconfigureZtk_popupZx_rootZy_root)r�rQrGZnewdexZin_selectionr'Ziswin�itemr
�	eventnameZverify_stater�r!r!r"r��s>�


zEditorWindow.right_menu_event)�CloserLNcCsft|jdd�}|jD]F}|d|d}}|durR|j|fdd�}|j||d�q|��q||_dS)NrrrVcSs|�|�dSr���event_generate�rGr,r!r!r"rZ%sz(EditorWindow.make_rmenu.<locals>.command�r
rZ)rtrGr)�add_commandr�r')r�r'r+r
r,rZr!r!r"r( s

zEditorWindow.make_rmenucCs|��Sr�)�rmenu_check_copy�r�r!r!r"�rmenu_check_cut,szEditorWindow.rmenu_check_cutcCs6z|j�d�}Wnty$YdS0|r.dSdSdS)Nr�rf�normal�rGr�r&)r�Zindxr!r!r"r3/s
zEditorWindow.rmenu_check_copycCs6z|jj�d|jd�Wnty,YdS0dSdS)Nztk::GetSelectionZ	CLIPBOARDrfr6)rGr��callr&r4r!r!r"�rmenu_check_paste7s
zEditorWindow.rmenu_check_pastecCst�|j�dSrN)rZAboutDialogrvr�r!r!r"r�?szEditorWindow.about_dialogcCst�|jd�dS)NZSettingsrO)rZConfigDialogrvr�r!r!r"r�EszEditorWindow.config_dialogcCs"|jr|j}n|j}t�|�dSrN)rsrvr
Z
show_idlehelp)r�rQ�parentr!r!r"r�Ks

zEditorWindow.help_dialogc
Csptjdd�dkr`zt�|j�Wqlty\}z"tjdt|�|j	d�WYd}~qld}~00nt
�|j�dS)Nr;r<�Document Start Failure��title�messager:rO)rrmri�	startfilerh�OSErrorrr�r�rG�
webbrowser�open)r�rQ�whyr!r!r"r�Us
�zEditorWindow.python_docscCs|j�d�dS)Nz<<Cut>>rO�rGr/r�r!r!r"r�`szEditorWindow.cutcCs |j�d�sdS|j�d�dS)Nr�z<<Copy>>rO)rGZ
tag_rangesr/r�r!r!r"r�dszEditorWindow.copycCs|j�d�|j�d�dS)Nz	<<Paste>>r�rO)rGr/r�r�r!r!r"r�kszEditorWindow.pastecCs.|j�ddd�|j�dd�|j�d�dS)Nr�r�zend-1cr�rO)rGr�r�r�r�r!r!r"r�pszEditorWindow.select_allcCs |j�ddd�|j�d�dS)Nr�r�rcr�rO)rGr�r�r�r!r!r"r�vszEditorWindow.remove_selectioncs*|jj�|jj�d�����fdd�}|S)N)zsel.first+1czsel.last-1ccs@|jd@dkr<z�d��d���Wnty:Yn0dS)NrHrr�r�)r�r&rP��
edge_indexZedges_tableZself_text_indexZself_text_mark_setr!r"�move_at_edge�sz<EditorWindow.move_at_edge_if_selection.<locals>.move_at_edge)rGr�r�)r�rFrGr!rEr"r�{s
z&EditorWindow.move_at_edge_if_selectioncCs|j�d�dS)Nz
<Meta-Delete>rOrDr�r!r!r"r��szEditorWindow.del_word_leftcCs|j�d�dS)Nz<Meta-d>rOrDr�r!r!r"r��szEditorWindow.del_word_rightcCst�|j�dSrN)r�findrGr�r!r!r"r��szEditorWindow.find_eventcCst�|j�dSrN)rZ
find_againrGr�r!r!r"r��szEditorWindow.find_again_eventcCst�|j�dSrN)rZfind_selectionrGr�r!r!r"r��sz!EditorWindow.find_selection_eventcCst�|j|j|j�dSrN)r	rGr�rrr�r!r!r"r��sz EditorWindow.find_in_files_eventcCst�|j�dSrN)rrGr�r!r!r"r��szEditorWindow.replace_eventcCsT|j}t�|dd�j}|durP|�ddd�|�d|�d��|�d�|��dS)	Nz
Go To Linez/Enter a positive integer
('big' = end of file):r�r�rcr��.0rO)rGrZGoto�resultr�r�r�r)r�rQrG�linenor!r!r"r��s�
zEditorWindow.goto_line_eventcCsnz|j�dd���}Wnty,d}Yn0t�|jdd|�j}|durj|jr^|j�|�n|j	�
|�|S)Nr�r�r?zOpen ModulezAEnter the name of a Python module
to search on sys.path and open:)rGr��stripr&rZ
ModuleNamerJrrrBr�r�)r�rA�	file_pathr!r!r"�open_module�s
�zEditorWindow.open_modulecCs|��dSrN)rNr�r!r!r"r��szEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,|��}|dur,dSddlm}|�|j|�dS)NZPyShellEditorWindowrOr)�browser)	r�r��	__class__�__name__rN�idlelibrOZ
ModuleBrowserrs)r�rQr�rOr!r!r"r��s�z EditorWindow.open_module_browsercCsddlm}|�|j�dS)Nr)�pathbrowserrO)rRrSZPathBrowserrs)r�rQrSr!r!r"r��szEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dd�dS)Nrz-cz,from turtledemo.__main__ import main; main()F)�shellrO)�
subprocessr�
executable�Popen)r�rQrU�cmdr!r!r"r��s�zEditorWindow.open_turtle_democCsN|durJ|dkrJ|j�dd|�|j�ddd�|j�ddd�|��dS)Nrr�z%d.0r�r�rcz
insert +1l)rGr�r�r��center)r�rKr!r!r"�gotoline�s
zEditorWindow.gotolinecCs`|rtj�|�rdStj�tj�|��\}}tj�|�tvr@dS|j�dd�}|�	d�o^d|vS)NTr�z1.0 lineendz#!Zpython)
rirjro�splitextr��normcaserrGr��
startswith)r�r��base�extr�r!r!r"r��szEditorWindow.ispythonsourcecCs|jr|j�|�d|_dSr�)rrZunregister_maybe_terminater4r!r!r"�
close_hook�szEditorWindow.close_hookcCs
||_dSr�)r`)r�r`r!r!r"�set_close_hookszEditorWindow.set_close_hookcCs2|jr|j�|�|��|j�|�|��dSr�)rrZfilename_changed_editr�rvZupdate_windowlist_registryr�r4r!r!r"r�s
z!EditorWindow.filename_change_hookcCsV|jr
dS|�|jj�r"|��|_|jrR|j�|j�|j�|j�|j�|j�dSr�)	r�r�r�r�r&r��removefilterr�r�r4r!r!r"�
_addcolorizer
s
zEditorWindow._addcolorizercCs,|js
dS|j��|j�|j�d|_dSr�)r�Zremovecolorsr�rbr4r!r!r"�_rmcolorizers

zEditorWindow._rmcolorizercCsH|��|��t�|j�|jdur0|j��|jdurD|j��dSr�)	rdrcr$r'rGr�Zupdate_highlight_colorsr�Z
update_colorsr4r!r!r"r�s


zEditorWindow.ResetColorizer�_cCsp|�d|�|�|�}|r6||jvr6|�d|d|�d|�|�krR|�d|�n|�d|d�|�|�dS)N�ERRORz
 wordstart�
r�z+1c)r�r��
IDENTCHARSr�r�)r�rG�pos�charr!r!r"�colorize_syntax_error.s
z"EditorWindow.colorize_syntax_errorcCs2tjddddd�}|s"d|jd<ntj|jd<dS)NrBr$zcursor-blinkr_rErra)rr~rGr`)r�Zcursorblinkr!r!r"r�9s�z EditorWindow.update_cursor_blinkcCsN|jdur|j��|jdur(|j��t�|jdd�}||jd<|��dS)NrBr$r])r�Zupdate_fontr�rr�rsrGr�)r�Znew_fontr!r!r"�	ResetFontCs




zEditorWindow.ResetFontcCs|t��|j_}|��D]\}}|jj|g|�R�q|��D]8}t�|�}|r>|��D]\}}|jj|g|�R�qXq>dSr�)	r�GetCurrentKeySetr+�default_keydefs�itemsrGZevent_delete�get_standard_extension_names�GetExtensionBindings)r��keydefsrQ�keylist�
extensionName�xkeydefsr!r!r"�RemoveKeybindingsTs
zEditorWindow.RemoveKeybindingsc
CsBt��|j_}|��|��D]}t�|�}|r |�|�q i}|jjD]B}i||d<|dD](}|rb|d||dt|d�d<qbqJ|j	D]�}|j	|}|�
t�}|dur�q�|d7}td|�D]r}	|�
|	�dkr�|�|	d�}
|
r�|�|	d�}d}||v�r|||v�r|||}|r�t||�}
|j|	|
d�q�q�dS)NrrVrZ�acceleratorr
r?)rw)rrmr+rnr�rprq�menudefsrr�r�rr�rFZ	entrycget�get_acceleratorr)
r�rrrtruZ
menuEventDictr>r+ZmenubarItemrcr�ZaccelZitemNamerQr!r!r"�ApplyKeybindings`s<
$




zEditorWindow.ApplyKeybindingscCs|jstjddddd�|_dS)NrBr^z
num-spacesrDrE)r�rr~r�r4r!r!r"r��s
�z#EditorWindow.set_notabs_indentwidthcCs|t��}|jd}|�t�}||jkr8|�|jd|�|rn|��|D]$}|�|d�}|j	|d|d�qH||jd<dS)Nr
rVrr1)
rZGetAllExtraHelpSourcesListr�r�rrrr��"_EditorWindow__extra_help_callbackr2)r�Z	help_listZhelpmenuZhelpmenu_length�entryrXr!r!r"r�s


z$EditorWindow.reset_help_menu_entriescs|f�fdd�	}|S)Nc
s�|�d�stj�|�}tjdd�dkrtzt�|�Wq~typ}z"tj	dt
|��jd�WYd}~q~d}~00n
t�
|�dS)N)Zwww�httpr;r<r;r<)r]rirjrqrrmr?r@rr�r�rGrArB)�helpfilerCr4r!r"�display_extra_help�s

�z>EditorWindow.__extra_help_callback.<locals>.display_extra_helpr!)r�r~rr!r4r"Z__extra_help_callback�sz"EditorWindow.__extra_help_callbackc
s�g}|j}|rRtj�|�rRt|dddd��}|��}Wd�n1sH0Y|r�tj�|�d}||vrx|�|�|�d|�g�|D]*}d|vs�tj�|dd��s���	|�q��fd	d
�|D�}d}|dt
|��}|�r~z@t|dddd��}|�|�Wd�n1�s0YWnXt�y|}z>t
|jd
d��shd|j_tjdd|�d�|jd�WYd}~n
d}~00|jjD]Z}	|	j}
|
�dt�t|�D]8\}}|��}|	�|�}
|
j||d||
dd��q��q�dS)N�r�utf_8r)r*�errorsrgr�rdcsg|]}|�vr|�qSr!r!)�.0rj�Z	bad_pathsr!r"�
<listcomp>�rSz9EditorWindow.update_recent_files_list.<locals>.<listcomp>Z1234567890ABCDEFGHIJK�w�recentfiles_messageFTzIDLE Warningz)Cannot save Recent Files list to disk.
  z
Select OK to continue.r<r�)r
rZr)rzrirjr�rB�	readlines�abspath�remover��appendr��
writelinesr@rrsr�r�showwarningrGrvryrrr�	enumerate�rstrip�#_EditorWindow__recent_file_callbackr2)r��new_fileZrf_listrMZrf_list_filerjZulcharsZrf_file�err�instancer>�i�	file_name�callbackr!r�r"r��s\�&
�.��
�z%EditorWindow.update_recent_files_listcs|f�fdd�	}|S)Ncs�jj|d�dS)N)ZeditFile)r�rB)Z
fn_closurer4r!r"�open_recent_file�sz=EditorWindow.__recent_file_callback.<locals>.open_recent_filer!)r�r�r�r!r4r"Z__recent_file_callback�sz#EditorWindow.__recent_file_callbackcCs�|��}|��}|r*|r*|d|t}n|r4|}n|r>|}nd}|pL|pL|}|��sfd|}d|}|j�|�|j�|�dS)Nz - �untitledz*%s*z*%s)�short_title�
long_title�_py_version�	get_savedrvZwm_titleZwm_iconname)r�Zshort�longr=Ziconr!r!r"r��szEditorWindow.saved_change_hookcCs
|j��Sr�)r�r�r4r!r!r"r��szEditorWindow.get_savedcCs|j�|�dSr�)r��	set_saved)r��flagr!r!r"r��szEditorWindow.set_savedcCs|j��dSr�)r��
reset_undor4r!r!r"r��szEditorWindow.reset_undocCs|jj}|rtj�|�SdS)Nr�)r�r�rirjr�)r�r�r!r!r"r��szEditorWindow.short_titlecCs|jjp
dS)Nr?)r�r�r4r!r!r"r��szEditorWindow.long_titlecCs|��dSrN)rYr�r!r!r"r�sz EditorWindow.center_insert_eventr�cCsH|j}|��\}}|�|�}||}td||d�}|�t|��dS)NrVr=)rG�getwindowlinesr�maxrr)r��markrGrv�botrKrIZnewtopr!r!r"rYs
zEditorWindow.centercCsN|j}|�d�}|�d�}||krF|��dkrFt|d�}||d}||fS)Nrz@0,65535rVrI)rGrZwinfo_heightrD)r�rGrvr�rIr!r!r"r�s

zEditorWindow.getwindowlinescCs|j}tt|�|���Sr�)rGrDrr�)r�r�rGr!r!r"rszEditorWindow.getlinenocCs(|j��}t�d|�}ttt|����S)Nz(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rvZwm_geometry�re�match�listr�rD�groups)r�Zgeom�mr!r!r"�get_geometrys
zEditorWindow.get_geometrycCs|��dSrN)r�r�r!r!r"r� szEditorWindow.close_eventcCsH|jrD|��s:|j��dkr&|j��|j��|j��|j��SdS)Nr6)r�r�rvr�Z	deiconify�lowerZlift�	maybesaver4r!r!r"r�$s


zEditorWindow.maybesavecCs:z"|��}t|�dkr|��|WSty4Yn0dS)N�cancel)r�r��_close�AttributeError)r�Zreplyr!r!r"r�-szEditorWindow.closecCs�|jjr|j|jjd�t�|j�|��|j��d|_d|_|j	rX|j	��d|_	d|_
d|_|j��d|_|j
��|jr�|��dS)N)r�)r�r�r�rZunregister_callbackr��unload_extensionsr�r�r�rGrxr�rvZdestroyr`r4r!r!r"r�6s"



zEditorWindow._closecCsi|_|��dSr�)�
extensions�load_standard_extensionsr4r!r!r"r�JszEditorWindow.load_extensionscCs0t|j���D]}t|d�r|��qi|_dS)Nr�)r�r��valuesr�r�)r��insr!r!r"r�Ns

zEditorWindow.unload_extensionscCsD|��D]6}z|�|�Wqtdt|��t��Yq0qdS)NzFailed to load extension)rp�load_extension�print�repr�	traceback�	print_exc)r�rAr!r!r"r�Tsz%EditorWindow.load_standard_extensionscCstjdd�S)NT)Zeditor_only)rZ
GetExtensionsr4r!r!r"rp\sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc		Cs6|j�||�}z<ztjd|td�}Wn ttfyFt�|�}Yn0Wntyhtd|��Yn0t||�}t	�
|�}t|d�r�|�|j
|�||�}||j|<|�r2|�|�|D]t}|�dd�}|dd�dkr�|dd�}q�|d	d�d
k�r
|dd	�}q�|d}t||�r�|j�|t||��q�dS)Nr�)�packagez
Failed to import extension: rx�-rerVr�rdr�Z_event)�extfilesr��	importlib�
import_module�__package__�ImportError�	TypeErrorr�rrrqr�rrxr�r�rrGr�)	r�rAZfname�mod�clsrrr�ZveventZ
methodnamer!r!r"r�cs4






zEditorWindow.load_extensioncCsH|dur|jj}|j}||_|��D]\}}|r$|j|g|�R�q$dSr�)r+rnrGrrror�)r�rrrGrQrsr!r!r"r�szEditorWindow.apply_bindingsc	Cs�|dur|jj}|dur |jj}|j}|j}|D]�\}}|�|�}|sHq0|D]�}|s^|��qL|\}	}
|	dd�dk}|r�|	dd�}	t|	�\}}	t||
�}
||
fdd�}|r�|�	|
t
�}|j|	|||
|d�qL|j|	|||
d�qLq0dS)NrV�!cSs|�|�dSr�r.r0r!r!r"rZ�sz(EditorWindow.fill_menus.<locals>.command)r
rrZrw�variable)r
rrZrw)
r+rxrnr�rGr�r�rry�get_var_objZ
BooleanVarZadd_checkbuttonr2)r�rxrrr�rGZmnameZ	entrylistr>r|r
r,ZcheckbuttonrrwrZ�varr!r!r"r�s<

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

zEditorWindow.getvarcCs(|�||�}|r|�|�nt|��dSr�)r�r�r�)r�rAr��vartyper�r!r!r"�setvar�szEditorWindow.setvarcCs,|j�|�}|s(|r(||j�|j|<}|Sr�)rxr�rG)r�rAr�r�r!r!r"r��szEditorWindow.get_var_objcCs,|jr$|j�d|�p"d|j�|�vSdSdS)NZTODO�STRINGrV)r�rG�
tag_prevrangeZ	tag_names)r�Z
text_indexr!r!r"�is_char_in_string�s
�zEditorWindow.is_char_in_stringcCs<z"|j�d�}|j�d�}||fWSty6YdS0dS)Nr�r�)NNr7)r�r�r�r!r!r"�get_selection_indices�s
z"EditorWindow.get_selection_indicescCs|jdpt}t|�S)N�tabs)rG�TK_TABWIDTH_DEFAULTrD)r��currentr!r!r"�get_tk_tabwidth�szEditorWindow.get_tk_tabwidthc	CsB|j}|��|kr>|j�dd|dd|jd|�}|j|d�dS)Nr]r�z
-displayof�n)r�)rGr�r�r8ZmasterZ	configure)r�ZnewtabwidthrGZpixelsr!r!r"�set_tk_tabwidth�s�zEditorWindow.set_tk_tabwidthcCsP|r@|r@|��}d|kr$dkr.nn||_|j|jkr@d|_|�|j�dS)Nr=rF)�guess_indentr�r�r�r�)r�r�Zguessr�r!r!r"r��sz#EditorWindow.set_indentation_paramsc
Cs>|j}|��\}}|r6|r6|�||�|�d|�dS|�dd�}|dkrp|�ddd�rd|�d�n|��dS|dd	vr�|�d�dS|j}t|�	|��}|d
|j
|j
}d}	||jkr�q�|dd�}|	d
}	t|�	|��}||ks�|dd	vr�q�q�|��|�d|	d�||k�r2|�
dd
||�|��dS)Nr�rOr�r?r�r�z	insert-1crd� 	rVrz
insert-%dcr�)rGr�rr�r�r�Zbellr�r��
expandtabsr�r{r�r�r�)
r�rQrGr�r��charsr�ZhaveZwantZ
ncharsdeletedr!r!r"r��s@


z"EditorWindow.smart_backspace_eventc
Cs|j}|��\}}|��z�|rb|rbt|�t|�krJ|j�|�W|��S|�||�|�d|�|�	dd�}t
||j�\}}|t|�kr�|�
||j�n>|jr�d}n&t|�|j��}|j}	d|	||	}|�d|�|�d�W|��dS|��0dS)Nr�r�r�r�rO)rGr�r��
index2liner�r�r�rr�r��get_line_indentr�r��reindent_tor�r�r�r�r�)
r�rQrGr�r��prefix�rawZ	effectiveZpadr�r!r!r"r�)s4�
�zEditorWindow.smart_indent_eventc	Cs|j}|��\}}|���z�|r>|r>|�||�|�d|�|�dd�}dt|�}}||krv||dvrv|d7}qX||kr�|�dd�W|�d�|�	�dS|d|�}d}|r�|ddvr�||j
kr�|dd�}|d7}q�|r�|�d	|d�|�d�dv�r|�d�q�|�dd�t|�d��}	t
�|j|j�}
|j
�s�|jD]`}t|	|d�}t|�d
}
|�|
d�}|
�|�|
�|�|
��}|du�s�|dk�rJ�q��qJ|
�|�p�d�n@|�dd�}|�r�|d}
nd}
|�|
d�}|
�|�|
�d�|
��}|t
jk�r�|t
jk�r nn|t
jk�r:|�d|�nT|t
jk�rV|�|
���n8|t
j k�r�|
�!�dk�r~|�d|�n|�|
�"��nW|�d�|�	�dS|
�#�}|�d|�|
�$��r�|�%|�n|�r�|
�&��r�|�'|�W|�d�|�	�dS|�d�|�	�0dS)
Nr�r�rr�rVrgrOrdzinsert - %d charsrIZconsoler�)(rGr�r�rr�r�r�r�r�r�r{r�r�rZParserr�r�r�r�r�Zset_codeZfind_good_parse_start�_build_char_in_string_funcZset_lor�Zget_continuation_typeZC_NONEZC_STRING_FIRST_LINEZC_STRING_NEXT_LINESZ	C_BRACKETr�Zcompute_bracket_indentZC_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentZget_base_indent_stringZis_block_openerr�Zis_block_closerr�)r�rQrGr�r�r�r�r��indent�lnor%�contextZstartatZstartatindexZrawtextZbodr�r�r!r!r"r�Ls�	
T
�


�




�


��
z%EditorWindow.newline_and_indent_eventcCs||jfdd�}|S)NcSs||d|�S)Nz+%dcr!)�offsetZ_startindexZ_icisr!r!r"�inner�sz6EditorWindow._build_char_in_string_func.<locals>.inner)r�)r�Z
startindexr�r!r!r"r��s�
z'EditorWindow._build_char_in_string_funccCs2|jr&t||j�\}}d|d|Sd|SdS)Nr�r�)r��divmodr�)r�r�ZntabsZnspacesr!r!r"�_make_blanks�szEditorWindow._make_blankscCsJ|j}|��|�ddd�r(|�dd�|r>|�d|�|��|��dS)Nr�z!=r�)rGr�r�rr�r�r�)r�r\rGr!r!r"r��szEditorWindow.reindent_tocCsPt|j|j���\}}|r@|r@t||j�\}}t||j�\}}nd}}||S�Nr)�IndentSearcherrGr�rr�)r��openerZindentedr�ZindentsmallZindentlarger!r!r"r��szEditorWindow.guess_indentcCsN|jdurdS|jjr&|j��d}n|j��d}|jdd|�d�d�dS)NZShowZHiderergz
 Line Numbers)r>r�r
)r�Zis_shownZhide_sidebarZshow_sidebarr)r�rQZ
menu_labelr!r!r"r��s


�z&EditorWindow.toggle_line_numbers_event)NNNN)N)N)N)N)N)N)N)N)N)N)N)N)r�)r�)N)NN)N)N)T)N)�rQ�
__module__�__qualname__Zidlelib.percolatorr%Zidlelib.colorizerr&r'Zidlelib.undor(Zidlelib.iomenur)r*rRr+Zidlelib.statusbarr,Zidlelib.autocompleter-Zidlelib.autoexpandr.Zidlelib.calltipr/Zidlelib.codecontextr0Zidlelib.sidebarr1Zidlelib.formatr2r3r4r5Zidlelib.parenmatchr6Zidlelib.squeezerr7Zidlelib.zoomheightr8r�getfilesystemencodingZfilesystemencodingrhr�r�r�r�r�r�r�r�rr
r�r�rr�r�r'r�r)r(r5r3r9r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rNr�r�r�r�rZr�r`rar�rcrdr��string�
ascii_letters�digitsrhrkr�rlrvrzr�rr{r�r�r�r�r�r�r�r�r�rYr�rr�r�r�r�r�r�r�r�rpr�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!r!r!r"r$2s�


+

%�









		

$
.


		�
	
%


	,#v
	r$cCstt|��Sr�)rDr)r�r!r!r"r�sr�z[ \t]*cCs$t�|�}|��t|���|��fSr�)�_line_indent_rer�rcr��groupr�)r�r�r�r!r!r"r�s
r�c@s8eZdZdd�Zdd�Zejejdfdd�Zdd	�Z	d
S)r�cCs(||_||_d|_|_d|_|_dSr�)rGr�r��finished�blkopenline�indentedline)r�rGr�r!r!r"r�szIndentSearcher.__init__cCsL|jr
dS|jd}|_t|�d}|j�|dd�r:dS|j�||d�S)Nr?rVrIz>=rcz lineend+1c)r�r�r�rGr�r�)r�r�r�r!r!r"�readlineszIndentSearcher.readline)�class�def�for�if�try�whilec		Cs>|jrn2||kr ||vr ||_n||kr:|jr:||_d|_dS)NrV)r�r�r�)	r�rF�token�startrcr��INDENT�NAMEZOPENERSr!r!r"�
tokeneater&szIndentSearcher.tokeneaterc	Csltj}|jt_zHz$t�|j�}|D]}|j|�q"WntjtfyLYn0W|t_n|t_0|j|j	fSr�)
�tokenize�tabsizer��generate_tokensr�r�
TokenError�SyntaxErrorr�r�)r�Zsave_tabsize�tokensr�r!r!r"r2szIndentSearcher.runN)
rQr�r�r�r�rrrrrr!r!r!r"r�s
�
r�cCs6|�d�}|dkr.|d|�||dd�}||fS)NrerrV)rH)�sr�r!r!r"rDs
r�[�]�/)ZbracketleftZbracketrightZslashcCs�|�|�}|rt��r"|dvr"dS|d}t�ddd�|�}t�ddd�|�}t�d	d|�}t�d
d|�}t�dd
|�}t�dd|�}t�dd|�}t�dd|�}t�dd|�}|S)N>rMrUrTr?rz-[a-z]\bcSs|����Sr�)r��upper�r�r!r!r"rR]rSz!get_accelerator.<locals>.<lambda>z\b\w+\bcSst�|��|���Sr�)�keynamesr�r�rr!r!r"rR^rSzKey-ZCancelz
Ctrl-BreakzControl-zCtrl-r��+z><r�r�r�)r�rZ	isCocoaTkr��sub)rrr,rsr	r!r!r"rySs
rycCs4|j}|�ddd�|�ddd�|�ddd�dS)	NZtcl_wordBreakAfterza brr�Z
tcl_wordcharsz\wZtcl_nonwordcharsz\W)r�r8)rsr�r!r!r"�
fixwordbreaksisrcCs~|}t|�tjdd�r&tjd}nd}t�|d�t||d�}|j}d|d<td�D] }|�dd|t	|�d�qXdS)	NrV)rsr��
rI�r�z  rg)
rr�argvrZsetupAppr$rGr�r�r�)r:rsr�rrGr�r!r!r"�_editor_windowrsr�__main__)rBzidlelib.idle_test.test_editorr=F)�	verbosity�exit)r):�
importlib.abcr��importlib.utilrirmr�r�rrr�rA�tkinterZtkinter.fontrZtkinter.ttkrrrZidlelib.configrrRrr	r
rrZidlelib.multicallr
rrrrZidlelib.treerZidlelib.utilrrr�Zpython_versionr�rr#r$r��compiler�r�r�rrryrrrQZunittestrBZidlelib.idle_test.htestrr!r!r!r"�<module>sz
Z

4
�	


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists