a  ze@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Tddl m Z ddlmZddl mZddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddl m!Z!ddlm"Z"dZ#de$Z%ejdkZ&ddZ'GdddZ(ddZ)e*dZ+ddZ,Gd d!d!Z-d"d#Z.d$d%d&d'Z/d(d)Z0d*d+Z1d,d-Z2e3d.krdd/l4m5Z5e5d0d1d2d3dd4l6m7Z7e7e2dS)5N)*)Font) Scrollbar) simpledialog) messagebox)idleConf) configdialog)grep)help) help_about)macosx)MultiCallCreator)pyparse)query)replace)search) wheel_event)windowz (%s)darwincCsbtj\}}}}}d||f}|d|f7}|dkrB|d|f7}n|dkr^|d|d|f7}|S)Nz%s%sz%s candidatezrc%sfinalr)sys version_info)majorminormicrolevelserialreleaser B/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/editor.py_sphinx_version%s r"c@s<eZdZddlmZddlmZmZddlm Z ddl m Z m Z ddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZmZmZmZddl m!Z!ddl"m#Z#ddl$m%Z%e&'Z(dZ)dZ*dZ+dddZ,dddZ-ddZ.ddZ/ddZ0ddZ1ddd Z2gd!Z3d"d#Z4d$d%Z5d&d'Z6d(d)Z7d*d+Z8dZ9d,d-Z:d.gZ;d/d0Zd5d6Z?dd7d8Z@dd9d:ZAdd;d<ZBdd=d>ZCd?d@ZDdAdBZEdCdDZFddEdFZGddGdHZHdIdJZIdKdLZJdMdNZKdOdPZLdQdRZMdSdTZNdUdVZOdWdXZPdYdZZQd[d\ZRd]d^ZSdd_d`ZTddadbZUddcddZVdedfZWdgdhZXdidjZYdkdlZZdmdnZ[dodpZ\dqdrZ]dsdtZ^e_j`e_jaduZbdvdwZcdxdyZddzd{Zed|d}Zfd~dZgddZhddZiddZjdddZkddZlddZmddZnddZoddZpddZqddZrddZsdddZtddZudddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddiZddZdddZdddZddZdddZdddZddZdd„ZddĄZddƄZdddȄZddʄZdd̄Zdd΄ZddЄZdd҄ZddԄZddքZddd؄ZdS) EditorWindowr) Percolator)ColorDelegator color_config) UndoDelegator) IOBindingencoding)mainmenu)MultiStatusBar) AutoComplete) AutoExpand)Calltip) CodeContext) LineNumbers)FormatParagraph FormatRegionIndentsRstrip) ParenMatch)Squeezer) ZoomHeightNTc CsL ddlm}tjdurtjtjdd}tj drvddtj dd}tj d r^d }qd }tj||dd}nVtj ddd krtjtjdd t } tj| r| }ntj dkrtjtjd}tj|}tj|r|t_tj dkrdtjt_ndtj ddt_||_|p*|j}||_t||_tj||jd|_} |rl|j|_|j|j_ni|_i|j_tjotjtjd|_d|_t| |_ } t!| dd|_"} tj#ddddd} dddd| d tj#ddd!ddd"}t$t%| fi||_&}|j&|j_'|(|)|j*d#|j+|j,d$|j-t./rx|,d$|j-|,d%|j0|,d&|j0n|,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<tf|jdd|d[<|jcdMdMtddY|g|htj#dd\d]d^d}| |_id_|_j|jj|_k|ltmtd`s|j&dat_n|odb|_p|q||_r}|s|_t}|u||jv|_v|jw|_w|x|jy|z||_{}|||j}dc|_~|dcd|_d|_d|_|rtj|rtj |s||rdd|_~||}||n||dd|_~||y|||jde}|rT|df}|dur(dg}|dkrB||dM}||_t|jtj|_tj|_tj|_|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|jr|||_|,d|jjn|ddd|j r:|||_tj#dddd^d r*||,d|jn|ddddS)Nr) ScriptBindingZDocz 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.chmrz0Resources/English.lproj/Documentation/index.htmlzfile://zhttps://docs.python.org/%d.%d/)menuzrecent-files.lstvbar)namemainr#widthinttypetextZnoneZ wordprocessorheight)r@padxwrapZhighlightthicknessrBZtabstylerHZWM_DELETE_WINDOW<>zz<2>z<3>z z z z z<>z<>z <>z<>z<>z<>z<>z<><>z<>cSsdSNbreakr eventr r r!z'EditorWindow.__init__..z<>z<>z<>z<>z<>z<>z <> <>z<>z<>z<>z<>z<>z<>z<>z<>z<>z<><>zzz<>z<>z<>z<>z<>z<>z<>z<>)sidefillexpand)Zweightcommand)rowcolumnZstickyZyscrollcommandfontIndentz use-spacesboolrblink_off_time insertofftime)2ii@KLFTrendz<>z z<>zzzz<>zz<>zz<>zzz<>z<>z<>z<>z<>z<>z<>z <>z<>z<>z<>optionsz *ode*ontextdisabledzline-numbers-defaultz<> *ine*umbers)Zidlelib.runscriptr8r#help_urlospathjoinr base_prefixplatformcountrisdirr"isfilenormpathflistrootMenumenubarrZListedTopleveltopvars tkinter_varsZ inversedict instance_dictrZuserdirrecent_files_pathprompt_last_lineFrame text_framerr? GetOptionr TextrFZfocused_widget createmenubarapply_bindingsprotocolclosebind close_eventr ZisAquaTkright_menu_eventrhandle_winconfigcutcopypastecenter_insert_event help_dialog python_docs about_dialog config_dialogopen_module_event select_allremove_selection find_eventfind_again_eventfind_in_files_eventfind_selection_event replace_eventgoto_line_eventsmart_backspace_eventnewline_and_indent_eventsmart_indent_eventr2fregionindent_region_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr3Ztoggle_tabs_eventZchange_indentwidth_eventmove_at_edge_if_selection del_word_leftdel_word_right home_callbackdict new_callbackZclose_all_callbackopen_module_browseropen_path_browseropen_turtle_demoset_status_barpackZLEFTZBOTHZ rowconfigureZcolumnconfigure handle_yviewZgridZNSEWsetGetFontZ focus_set set_widthusetabstabwidth indentwidthset_notabs_indentwidthhasattrr_update_cursor_blinknum_context_linesr$perr'undo insertfilterundo_block_startundo_block_stopZset_saved_change_hooksaved_change_hookr(ioZset_filename_change_hookfilename_change_hookZ good_loadset_indentation_paramscolor code_context line_numbersexistsloadfileispythonsourceZ set_filenameResetColorizerupdate_recent_files_listload_extensionsmenudictgetindex add_separator wmenu_endZregister_callbackpostwindowsmenurZ askintegerrZaskyesno showerror event_addr,Zautocomplete_eventZtry_open_completions_eventZforce_open_completions_eventr-Zexpand_word_eventr1Zformat_paragraph_eventr5Zflash_paren_eventZparen_closed_eventZcheck_module_eventZrun_module_eventZrun_custom_eventr4Z do_rstripr.ctipZtry_open_calltip_eventZrefresh_calltip_eventZforce_open_calltip_eventr7Zzoom_height_eventallow_code_contextr/Ztoggle_code_context_eventupdate_menu_stateallow_line_numbersr0toggle_line_numbers_event)selfrqfilenamekeyrrr8ZdochomeZpyverZbasepathZchmfilerur|r?rBZ text_optionsrFrindentsZ usespacesrrr is_py_srcr=rbZ autocompleteZ parenmatchZ scriptbindingrr r r!__init__Hs                                                  zEditorWindow.__init__cCs |dSN)rrrPr r r!r`szEditorWindow.handle_winconfigcCs^|j}tt|jj|d|dg}|d|}t||ddd}|||_ dS)NZborderrIr<r\)r\0) rFsummaptkZgetintZcgetZ winfo_widthrmeasurerB)rrFZ inner_paddingZ pixel_widthZzero_char_widthr r r!rcszEditorWindow.set_widthcCs|j\}}|j|dSrM)rZdefaultfilenamerqnew)rrPdirnamebasenamer r r!rps zEditorWindow.new_callbackcCs|jd@dkr|jdkrdS|jdrd|jdddrd|jdddrdt|jddd }n8|jdd}tt |D]}||d vr~qq~t |}t|jd dd }||krd}d t |d }|jd @dkr|j dddn|jds|j dd n@|j|jdd|jd rB|j ddn|j dd|j|}|jd}|j|d|r||}}|j ddd|j d|||j d ||jd dS)NrZHomeZiomark<=zinsert lineendinsert linestart.rU)  insertzinsert linestart+csel1.0rb sel.firstZ my_anchor<sel.last>rN)stateZkeysymrFrcomparerCsplitrrangelenstr tag_removemark_settag_addsee)rrPZinsertptlineZlineatdestfirstlastr r r!rusF       zEditorWindow.home_callbackcCs||j|_t|jdddd}tjdkr<|jjddtd|jjdd td|jjd d td|jjt t d |jt t d |j d |j |j d dd|j |j dS)NrUZgrey75)rHZ borderwidthZ backgroundrZ _padding1z )rVr[zCol: ?rzLn: ?)rVrWz<>z z)r+ru status_barr{rrl set_labelZRIGHTrZBOTTOMXrFrset_line_and_columnrZ after_idle)rsepr r r!rs zEditorWindow.set_status_barcCs>|jtd\}}|jdd||jdd|dS)Nrr[zCol: %srzLn: %s)rFrZINSERTrrr)rrPrr[r r r!rsz EditorWindow.set_line_and_column))fileZ_File)editZ_Edit)formatZF_ormat)runZ_Run)rdZ_Options)rZ_Window)r Z_HelpcCs|j}i|_}|jD]N\}}t|\}}t||dd}t||d|d||<}|j|||dqtrt|ddd|d<}|jd|d | t|jdd |_ |jd j d d d|j d|jd t |_|dS)NZ_menu_postcommandr)r@tearoff postcommand)labelr= underlineZapple)r@rZ applicationZIDLE)r r=rrr:z Recent Files)r r r=r )rtr menu_specsprepstrgetattrrsZ add_cascader Z isCarbonTk fill_menusrecent_files_menuZinsert_cascaderENDbase_helpmenu_lengthreset_help_menu_entries)rZmbarrr@r r rr=r r r!rs,  zEditorWindow.createmenubarcCsJ|jd}|d}|dur d}||jkr<||jd|t|dS)NrrbrcrU)rrrdeleterZadd_windows_to_menu)rr=rbr r r!rs   zEditorWindow.postwindowsmenucCs|j|}|j||ddS)N)r r entryconfig)rr=rr menuitemr r r!update_menu_labels zEditorWindow.update_menu_labelcCs|j|}|j||ddS)Nrr)rr=rrrr r r!rs zEditorWindow.update_menu_statecGsT|dkr         zEditorWindow.right_menu_event)CloserKNcCsft|jdd}|jD]F}|d|d}}|durR|j|fdd}|j||dq|q||_dS)Nrr rUcSs||dSrevent_generaterFr+r r r!rY$sz(EditorWindow.make_rmenu..commandr rY)rsrFr( add_commandrr&)rr&r*r r+rYr r r!r's  zEditorWindow.make_rmenucCs|Sr)rmenu_check_copyrr r r!rmenu_check_cut+szEditorWindow.rmenu_check_cutcCs6z|jd}Wnty$YdS0|r.dSdSdS)NrrenormalrFrr%)rZindxr r r!r2.s  zEditorWindow.rmenu_check_copycCs6z|jjd|jdWnty,YdS0dSdS)Nztk::GetSelectionZ CLIPBOARDrer5)rFrcallr%r3r r r!rmenu_check_paste6s  zEditorWindow.rmenu_check_pastecCst|jdSrM)r Z AboutDialogrurr r r!r>s zEditorWindow.about_dialogcCst|jddS)NZSettingsrN)rZ ConfigDialogrurr r r!rDszEditorWindow.config_dialogcCs"|jr|j}n|j}t|dSrM)rrrur Z show_idlehelp)rrPparentr r r!rJs  zEditorWindow.help_dialogc Csptjdddkr`zt|jWqlty\}z"tjdt||j dWYd}~qld}~00n t |jdS)Nr:r;Document Start Failuretitlemessager9rN) rrlrh startfilergOSErrorrrrrF webbrowseropen)rrPwhyr r r!rTs  zEditorWindow.python_docscCs|jddS)Nz<>rNrFr.rr r r!r_s zEditorWindow.cutcCs |jdsdS|jddS)Nrz<>rN)rFZ tag_rangesr.rr r r!rcs  zEditorWindow.copycCs|jd|jddS)Nz <>rrN)rFr.rrr r r!rjs  zEditorWindow.pastecCs.|jddd|jdd|jddS)Nrrzend-1crrN)rFrrrrr r r!ros zEditorWindow.select_allcCs |jddd|jddS)NrrrbrrN)rFrrrr r r!rus zEditorWindow.remove_selectioncs*|jj|jjdfdd}|S)N)z sel.first+1cz sel.last-1ccs@|jd@dkr.move_at_edge)rFrr)rrErFr rDr!rzs z&EditorWindow.move_at_edge_if_selectioncCs|jddS)Nz rNrCrr r r!rs zEditorWindow.del_word_leftcCs|jddS)NzrNrCrr r r!rs zEditorWindow.del_word_rightcCst|jdSrM)rfindrFrr r r!rs zEditorWindow.find_eventcCst|jdSrM)rZ find_againrFrr r r!rs zEditorWindow.find_again_eventcCst|jdSrM)rZfind_selectionrFrr r r!rs z!EditorWindow.find_selection_eventcCst|j|j|jdSrM)r rFrrqrr r r!rsz EditorWindow.find_in_files_eventcCst|jdSrM)rrFrr r r!rs zEditorWindow.replace_eventcCsT|j}t|ddj}|durP|ddd|d|d|d|dS) Nz Go To Linez/Enter a positive integer ('big' = end of file):rrrbr.0rN)rFrZGotoresultrrrr)rrPrFlinenor r r!rs zEditorWindow.goto_line_eventcCsnz|jdd}Wnty,d}Yn0t|jdd|j}|durj|jr^|j|n |j ||S)Nrrr>z Open ModulezAEnter the name of a Python module to search on sys.path and open:) rFrstripr%rZ ModuleNamerIrqrArr)rr@ file_pathr r r! open_modules   zEditorWindow.open_modulecCs |dSrM)rMrr r r!rszEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,|}|dur,dSddlm}||j|dS)NZPyShellEditorWindowrNr)browser) rr __class____name__rMidlelibrNZ ModuleBrowserrr)rrPrrNr r r!rs  z EditorWindow.open_module_browsercCsddlm}||jdS)Nr) pathbrowserrN)rQrRZ PathBrowserrr)rrPrRr r r!rs  zEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dddS)Nrz-cz,from turtledemo.__main__ import main; main()F)shellrN) subprocessr executablePopen)rrPrTcmdr r r!rszEditorWindow.open_turtle_democCsN|durJ|dkrJ|jdd||jddd|jddd|dS)Nrrz%d.0rrrbz insert +1l)rFrrrcenter)rrJr r r!gotolines zEditorWindow.gotolinecCs`|rtj|rdStjtj|\}}tj|dvr@dS|jdd}|do^d|vS)NT)z.pyz.pywrz 1.0 lineendz#!Zpython) rhrirnsplitextrnormcaserFr startswith)rrbaseextrr r r!rszEditorWindow.ispythonsourcecCs|jr|j|d|_dSr)rqZunregister_maybe_terminater3r r r! close_hooks zEditorWindow.close_hookcCs ||_dSr)r_)rr_r r r!set_close_hookszEditorWindow.set_close_hookcCs2|jr|j|||j||dSr)rqZfilename_changed_editrruZupdate_windowlist_registryrr3r r r!rs   z!EditorWindow.filename_change_hookcCsV|jr dS||jjr"||_|jrR|j|j|j|j|j|jdSr) rrrrr%r removefilterrrr3r r r! _addcolorizer s zEditorWindow._addcolorizercCs,|js dS|j|j|jd|_dSr)rZ removecolorsrrar3r r r! _rmcolorizers  zEditorWindow._rmcolorizercCsH||t|j|jdur0|j|jdurD|jdSr) rcrbr#r&rFrZupdate_highlight_colorsrZ update_colorsr3r r r!rs    zEditorWindow.ResetColorizer_cCsp|d|||}|r6||jvr6|d|d|d||krR|d|n|d|d||dS)NERRORz wordstart rz+1c)rr IDENTCHARSrr)rrFposcharr r r!colorize_syntax_error-s  z"EditorWindow.colorize_syntax_errorcCs2tjddddd}|s"d|jd<n tj|jd<dS)NrAr#z cursor-blinkr^rDrr`)rr}rFr_)rZ cursorblinkr r r!r8s  z EditorWindow.update_cursor_blinkcCsN|jdur|j|jdur(|jt|jdd}||jd<|dS)NrAr#r\)rZ update_fontrrrrrrFr)rZnew_fontr r r! ResetFontBs     zEditorWindow.ResetFontcCs|t|j_}|D]\}}|jj|g|Rq|D]8}t|}|r>|D]\}}|jj|g|RqXq>dSr) rGetCurrentKeySetr*default_keydefsitemsrFZ event_deleteget_standard_extension_namesGetExtensionBindings)rkeydefsrPkeylist extensionNamexkeydefsr r r!RemoveKeybindingsSs  zEditorWindow.RemoveKeybindingsc CsBt|j_}||D]}t|}|r ||q i}|jjD]B}i||d<|dD](}|rb|d||dt|dd<qbqJ|j D]}|j |}| t }|durq|d7}t d|D]r} | | dkr|| d} | r|| d} d} ||vr| ||vr||| } | rt|| } |j| | dqqdS)NrrUrY acceleratorr r>)rv)rrlr*rmrrorpmenudefsr rrrrrEZ entrycgetget_acceleratorr) rrqrsrtZ menuEventDictr=r*Z menubarItemrbrZaccelZitemNamerPr r r!ApplyKeybindings_s<      $        zEditorWindow.ApplyKeybindingscCs|jstjddddd|_dS)NrAr]z num-spacesrCrD)rrr}rr3r r r!rs z#EditorWindow.set_notabs_indentwidthcCs|t}|jd}|t}||jkr8||jd||rn||D]$}||d}|j |d|dqH||jd<dS)Nr rUrr0) rZGetAllExtraHelpSourcesListrrrrrr"_EditorWindow__extra_help_callbackr1)rZ help_listZhelpmenuZhelpmenu_lengthentryrWr r r!rs   z$EditorWindow.reset_help_menu_entriescs|ffdd }|S)Nc s|dstj|}tjdddkrtzt|Wq~typ}z"tj dt |j dWYd}~q~d}~00n t |dS)N)Zwwwhttpr:r;r:r;)r\rhrirprrlr>r?rrrrFr@rA)helpfilerBr3r r!display_extra_helps   z>EditorWindow.__extra_help_callback..display_extra_helpr )rr}r~r r3r!Z__extra_help_callbacks z"EditorWindow.__extra_help_callbackc sg}|j}|rRtj|rRt|dddd}|}Wdn1sH0Y|rtj|d}||vrx|||d|g|D]*}d|vstj|dds |qfd d |D}d }|dt |}|r~z@t|d ddd}| |Wdn1s0YWnXt y|}z>t |jd dshd|j_tjdd|d|jdWYd}~n d}~00|jjD]Z} | j} | dtt|D]8\} } | } | | } | j|| d| | ddqqdS)Nrutf_8r)r)errorsrfrrccsg|]}|vr|qSr r ).0riZ bad_pathsr r! rRz9EditorWindow.update_recent_files_list..Z1234567890ABCDEFGHIJKwrecentfiles_messageFTz IDLE Warningz)Cannot save Recent Files list to disk. z Select OK to continue.r;r)r rYr )ryrhrirrA readlinesabspathremoverappendr writelinesr?rrrrr showwarningrFrurxrrr enumeraterstrip#_EditorWindow__recent_file_callbackr1)rnew_fileZrf_listrLZ rf_list_fileriZulcharsZrf_fileerrinstancer=i file_namecallbackr rr!rs\&   .   z%EditorWindow.update_recent_files_listcs|ffdd }|S)Ncsjj|ddS)N)ZeditFile)rrA)Z fn_closurer3r r!open_recent_filesz=EditorWindow.__recent_file_callback..open_recent_filer )rrrr r3r!Z__recent_file_callbacksz#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_savedruZwm_titleZ wm_iconname)rZshortlongr<Ziconr r r!rs  zEditorWindow.saved_change_hookcCs |jSr)rrr3r r r!rszEditorWindow.get_savedcCs|j|dSr)r set_saved)rflagr r r!rszEditorWindow.set_savedcCs|jdSr)r reset_undor3r r r!rszEditorWindow.reset_undocCs|jj}|rtj|SdS)Nr)rrrhrir)rrr r r!rszEditorWindow.short_titlecCs |jjp dS)Nr>)rrr3r r r!rszEditorWindow.long_titlecCs |dSrM)rXrr r r!rsz EditorWindow.center_insert_eventrcCsH|j}|\}}||}||}td||d}|t|dS)NrUr<)rFgetwindowlinesrmaxrr)rmarkrFrubotrJrHZnewtopr r r!rXs   zEditorWindow.centercCsN|j}|d}|d}||krF|dkrFt|d}||d}||fS)Nrz@0,65535rUrH)rFrZ winfo_heightrC)rrFrurrHr r r!r s    zEditorWindow.getwindowlinescCs|j}tt||Sr)rFrCrr)rrrFr r r!rszEditorWindow.getlinenocCs(|j}td|}ttt|S)Nz(\d+)x(\d+)\+(-?\d+)\+(-?\d+))ruZ wm_geometryrematchlistrrCgroups)rZgeommr r r! get_geometrys  zEditorWindow.get_geometrycCs |dSrM)rrr r r!rszEditorWindow.close_eventcCsH|jrD|s:|jdkr&|j|j|j|jSdS)Nr5)rrrurZ deiconifylowerZlift maybesaver3r r r!r#s   zEditorWindow.maybesavecCs:z"|}t|dkr||WSty4Yn0dS)Ncancel)rr_closeAttributeError)rZreplyr r r!r,s  zEditorWindow.closecCs|jjr|j|jjdt|j||jd|_d|_|j rX|j d|_ d|_ d|_ |j d|_ |j |jr|dS)N)r)rrrrZunregister_callbackrunload_extensionsrrrrFrwrruZdestroyr_r3r r r!r5s"     zEditorWindow._closecCsi|_|dSr) extensionsload_standard_extensionsr3r r r!rIszEditorWindow.load_extensionscCs0t|jD]}t|dr|qi|_dS)Nr)rrvaluesrr)rinsr r r!rMs  zEditorWindow.unload_extensionscCsD|D]6}z||Wqtdt|tYq0qdS)NzFailed to load extension)roload_extensionprintrepr traceback print_exc)rr@r r r!rSs  z%EditorWindow.load_standard_extensionscCs tjddS)NT)Z editor_only)rZ GetExtensionsr3r r r!ro[sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc Cs6|j||}z.command)r r rYrvvariable)r r rYrv) r*rwrmrrFrrr rx get_var_objZ BooleanVarZadd_checkbuttonr1)rrwrqrrFZmnameZ entrylistr=r{r r+Z checkbuttonr rvrYvarr r r!rs<       zEditorWindow.fill_menuscCs&||}|r|}|St|dSr)rr NameError)rr@rvaluer r r!getvars  zEditorWindow.getvarcCs(|||}|r||nt|dSr)rrr)rr@rvartyperr r r!setvars  zEditorWindow.setvarcCs,|j|}|s(|r(||j|j|<}|Sr)rwrrF)rr@rrr r r!rs zEditorWindow.get_var_objcCs,|jr$|jd|p"d|j|vSdSdS)NZTODOSTRINGrU)rrF tag_prevrangeZ tag_names)rZ text_indexr r r!is_char_in_strings zEditorWindow.is_char_in_stringcCs<z"|jd}|jd}||fWSty6YdS0dS)Nrr)NNr6)rrrr r r!get_selection_indicess     z"EditorWindow.get_selection_indicescCs|jdp t}t|S)Ntabs)rFTK_TABWIDTH_DEFAULTrC)rcurrentr r r!get_tk_tabwidthszEditorWindow.get_tk_tabwidthc CsB|j}||kr>|jdd|dd|jd|}|j|ddS)Nr\rz -displayofn)r)rFrrr7ZmasterZ configure)rZ newtabwidthrFZpixelsr r r!set_tk_tabwidths zEditorWindow.set_tk_tabwidthcCsP|r@|r@|}d|kr$dkr.nn||_|j|jkr@d|_||jdS)Nr<rF) guess_indentrrrr)rrZguessrr r r!rs z#EditorWindow.set_indentation_paramsc Cs>|j}|\}}|r6|r6||||d|dS|dd}|dkrp|dddrd|dn|dS|dd vr|ddS|j}t| |}|d |j |j }d } ||j krq|dd}| d } t| |}||ks|dd vrqq| |d | d||kr2| dd |||dS)NrrNrr>rrz insert-1crc rUrz insert-%dcr)rFrrrrrZbellrr expandtabsrrzrrr) rrPrFrrcharsrZhaveZwantZ ncharsdeletedr r r!rs@          z"EditorWindow.smart_backspace_eventc Cs|j}|\}}|z|rb|rbt|t|krJ|j|W|S||||d|| dd}t ||j \}}|t |kr| ||jn>|jrd}n&t ||j }|j} d| || }|d||dW|dS|0dS)NrrrrrN)rFrr index2linerrrrrrget_line_indentrr reindent_torrrrr) rrPrFrrprefixrawZ effectiveZpadrr r r!r(s4        zEditorWindow.smart_indent_eventc Cs|j}|\}}|z|r>|r>||||d||dd}dt|}}||krv||dvrv|d7}qX||kr|ddW|d| dS|d|}d}|r|ddvr||j kr|dd}|d7}q|r|d |d|ddvr|dq|ddt | d} t |j|j} |j s|jD]`} t| | d} t| d } || d}| || || }|dus| dkrJqqJ| |pdn@|d d}|r|d} nd } || d}| || d| }|t jkr|t jkr nn|t jkr:|d|nT|t jkrV|| n8|t j kr| !dkr~|d|n|| "nW|d| dS| #}|d|| $r|%|n|r| &r|'|W|d| dS|d| 0dS) NrrrrrUrfrNrczinsert - %d charsrHZconsoler)(rFrrrrrrrrrrzrrrZParserrrrrrZset_codeZfind_good_parse_start_build_char_in_string_funcZset_lorZget_continuation_typeZC_NONEZC_STRING_FIRST_LINEZC_STRING_NEXT_LINESZ C_BRACKETrZcompute_bracket_indentZ C_BACKSLASHZget_num_lines_in_stmtZcompute_backslash_indentZget_base_indent_stringZis_block_openerrZis_block_closerr)rrPrFrrrrrindentlnor$contextZstartatZ startatindexZrawtextZbodrrr r r!rKs       T                            z%EditorWindow.newline_and_indent_eventcCs||jfdd}|S)NcSs||d|S)Nz+%dcr )offsetZ _startindexZ_icisr r r!innersz6EditorWindow._build_char_in_string_func..inner)r)rZ startindexrr r r!rs z'EditorWindow._build_char_in_string_funccCs2|jr&t||j\}}d|d|Sd|SdS)Nrr)rdivmodr)rrZntabsZnspacesr r r! _make_blanksszEditorWindow._make_blankscCsJ|j}||dddr(|dd|r>|d|||dS)Nrz!=r)rFrrrrrr)rr[rFr r r!rs zEditorWindow.reindent_tocCsPt|j|j\}}|r@|r@t||j\}}t||j\}}nd}}||SNr)IndentSearcherrFrrr)ropenerZindentedrZ indentsmallZ indentlarger r r!rs zEditorWindow.guess_indentcCsN|jdurdS|jjr&|jd}n|jd}|jdd|dddS)NZShowZHiderdrfz Line Numbers)r=rr )rZis_shownZ hide_sidebarZ show_sidebarr)rrPZ menu_labelr r r!rs   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)rP __module__ __qualname__Zidlelib.percolatorr$Zidlelib.colorizerr%r&Z idlelib.undor'Zidlelib.iomenur(r)rQr*Zidlelib.statusbarr+Zidlelib.autocompleter,Zidlelib.autoexpandr-Zidlelib.calltipr.Zidlelib.codecontextr/Zidlelib.sidebarr0Zidlelib.formatr1r2r3r4Zidlelib.parenmatchr5Zidlelib.squeezerr6Zidlelib.zoomheightr7rgetfilesystemencodingZfilesystemencodingrgrrrrrrrrrr rrrrrr&rr(r'r4r2r8rrrrrrrrrrrrrrrrrrrMrrrrrYrr_r`rrbrcrstring ascii_lettersdigitsrgrjrrkruryrrrzrrrrrrrrrrXrrrrrrrrrrrorrrrrrrrrrrrrrrrrrrrr r r r!r#1s               +    %              $ .     %     ,#v  r#cCs tt|Sr)rCr)rr r r!rsrz[ \t]*cCs$t|}|t||fSr)_line_indent_rerrbrgroupr)rrrr r r!rs rc@s8eZdZddZddZejejdfddZdd Z d S) rcCs(||_||_d|_|_d|_|_dSr)rFrrfinished blkopenline indentedline)rrFrr r r!rs zIndentSearcher.__init__cCsL|jr dS|jd}|_t|d}|j|ddr:dS|j||dS)Nr>rUrHz>=rbz lineend+1c)rrrrFrr)rrrr r r!readlines zIndentSearcher.readline)classdefforiftrywhilec Cs>|jrn2||kr ||vr ||_n||kr:|jr:||_d|_dS)NrU)rrr) rrEtokenstartrbrINDENTNAMEZOPENERSr r r! tokeneater%szIndentSearcher.tokeneaterc Csltj}|jt_zHz$t|j}|D]}|j|q"WntjtfyLYn0W|t_n|t_0|j|j fSr) tokenizetabsizergenerate_tokensrr TokenError SyntaxErrorrr)rZ save_tabsizetokensrr r r!r1s zIndentSearcher.runN) rPrrrrrrrrrr r r r!rs  rcCs6|d}|dkr.|d|||dd}||fS)NrdrrU)rG)srr r r!r Cs r []/)Z bracketleftZ bracketrightZslashcCs||}|rtr"|dvr"dS|d}tddd|}tddd|}td d|}td d |}td d |}tdd|}tdd|}tdd|}tdd|}|S)N>rLrTrSr>rz-[a-z]\bcSs |Sr)rupperrr r r!rQ\rRz!get_accelerator..z\b\w+\bcSst||Sr)keynamesrrr r r r!rQ]rRzKey-ZCancelz Ctrl-BreakzControl-zCtrl-r+z>sx                    Z  4