asda?‰PNG  IHDR ? f ??C1 sRGB ??é gAMA ±? üa pHYs ? ??o¨d GIDATx^íüL”÷e÷Y?a?("Bh?_ò???¢§?q5k?*:t0A-o??¥]VkJ¢M??f?±8\k2íll£1]q?ù???T a bYh@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Tddl m Z ddlmZddl mZddl mZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddl m!Z!ddl"m#Z#ddlm$Z$dZ%de&Z'ejdkZ(ddZ)GdddZ*ddZ+e,dZ-dd Z.Gd!d"d"Z/d#d$Z0d%d&d'd(Z1d)d*Z2d+d,Z3d-d.Z4e5d/krdd0l6m7Z7e7d1d2d3d4dd5l8m9Z9e9e4dS)6N)*)Font) Scrollbar) simpledialog) messagebox)idleConf) configdialog)grep)help) help_about)macosx)MultiCallCreator)pyparse)query)replace)search) wheel_event) py_extensions)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!*/usr/local/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)rApadxwrapZhighlightthicknessrCZtabstylerIZWM_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.runscriptr9r$help_urlospathjoinr base_prefixplatformcountrisdirr#isfilenormpathflistrootMenumenubarrZListedTopleveltopvars tkinter_varsZ inversedict instance_dictrZuserdirrecent_files_pathprompt_last_lineFrame text_framerr@ GetOptionr TextrGZfocused_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_eventr3fregionindent_region_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr4Ztoggle_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_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_eventallow_code_contextr0Ztoggle_code_context_eventupdate_menu_stateallow_line_numbersr1toggle_line_numbers_event)selfrrfilenamekeyrsr9ZdochomeZpyverZbasepathZchmfilervr}r@rCZ text_optionsrGrindentsZ usespacesrrr is_py_srcr>rcZ autocompleteZ parenmatchZ scriptbindingrr!r!r"__init__Is                                                  zEditorWindow.__init__cCs |dSN)rrrQr!r!r"raszEditorWindow.handle_winconfigcCs^|j}tt|jj|d|dg}|d|}t||ddd}|||_ dS)NZborderrJr=r])r]0) rGsummaptkZgetintZcgetZ winfo_widthrmeasurerC)rrGZ inner_paddingZ pixel_widthZzero_char_widthr!r!r"rdszEditorWindow.set_widthcCs|j\}}|j|dSrN)rZdefaultfilenamerrnew)rrQdirnamebasenamer!r!r"rqs 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.rV)  insertzinsert linestart+csel1.0rc sel.firstZ my_anchor<sel.last>rO)stateZkeysymrGrcomparerDsplitrrangelenstr tag_removemark_settag_addsee)rrQZinsertptlineZlineatdestfirstlastr!r!r"rvsF       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)NrVZgrey75)rIZ borderwidthZ backgroundrZ _padding1z )rWr\zCol: ?rzLn: ?)rWrXz<>z z)r,rv status_barr|rrm set_labelZRIGHTrZBOTTOMXrGrset_line_and_columnrZ after_idle)rsepr!r!r"rs zEditorWindow.set_status_barcCs>|jtd\}}|jdd||jdd|dS)Nrr\zCol: %srzLn: %s)rGrZINSERTrrr)rrQrr\r!r!r"rsz 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||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)rAtearoff postcommand)labelr> underlineZapple)rArZ applicationZIDLE)r r>rrr;z Recent Files)r r r>r )rur menu_specsprepstrgetattrrtZ add_cascader Z isCarbonTk fill_menusrecent_files_menuZinsert_cascaderENDbase_helpmenu_lengthreset_help_menu_entries)rZmbarrrAr r r r>r!r!r"rs,  zEditorWindow.createmenubarcCsJ|jd}|d}|dur d}||jkr<||jd|t|dS)NrrcrdrV)rrrdeleterZadd_windows_to_menu)rr>rcr!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)CloserLNcCsft|jdd}|jD]F}|d|d}}|durR|j|fdd}|j||dq|q||_dS)Nrr rVcSs||dSrevent_generaterGr,r!r!r"rZ%sz(EditorWindow.make_rmenu..commandr rZ)rtrGr) add_commandrr')rr'r+r r,rZr!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)NrrfnormalrGrr&)rZindxr!r!r"r3/s  zEditorWindow.rmenu_check_copycCs6z|jjd|jdWnty,YdS0dSdS)Nztk::GetSelectionZ CLIPBOARDrfr6)rGrcallr&r4r!r!r"rmenu_check_paste7s  zEditorWindow.rmenu_check_pastecCst|jdSrN)r Z AboutDialogrvrr!r!r"r?s zEditorWindow.about_dialogcCst|jddS)NZSettingsrO)rZ ConfigDialogrvrr!r!r"rEszEditorWindow.config_dialogcCs"|jr|j}n|j}t|dSrN)rsrvr Z show_idlehelp)rrQparentr!r!r"rKs  zEditorWindow.help_dialogc Csptjdddkr`zt|jWqlty\}z"tjdt||j dWYd}~qld}~00n t |jdS)Nr;r<Document Start Failuretitlemessager:rO) rrmri startfilerhOSErrorrrrrG webbrowseropen)rrQwhyr!r!r"rUs  zEditorWindow.python_docscCs|jddS)Nz<>rOrGr/rr!r!r"r`s zEditorWindow.cutcCs |jdsdS|jddS)Nrz<>rO)rGZ tag_rangesr/rr!r!r"rds  zEditorWindow.copycCs|jd|jddS)Nz <>rrO)rGr/rrr!r!r"rks  zEditorWindow.pastecCs.|jddd|jdd|jddS)Nrrzend-1crrO)rGrrrrr!r!r"rps zEditorWindow.select_allcCs |jddd|jddS)NrrrcrrO)rGrrrr!r!r"rvs zEditorWindow.remove_selectioncs*|jj|jjdfdd}|S)N)z sel.first+1cz sel.last-1ccs@|jd@dkr.move_at_edge)rGrr)rrFrGr!rEr"r{s z&EditorWindow.move_at_edge_if_selectioncCs|jddS)Nz rOrDrr!r!r"rs zEditorWindow.del_word_leftcCs|jddS)NzrOrDrr!r!r"rs zEditorWindow.del_word_rightcCst|jdSrN)rfindrGrr!r!r"rs zEditorWindow.find_eventcCst|jdSrN)rZ find_againrGrr!r!r"rs zEditorWindow.find_again_eventcCst|jdSrN)rZfind_selectionrGrr!r!r"rs z!EditorWindow.find_selection_eventcCst|j|j|jdSrN)r rGrrrrr!r!r"rsz EditorWindow.find_in_files_eventcCst|jdSrN)rrGrr!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):rrrcr.0rO)rGrZGotoresultrrrr)rrQrGlinenor!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:) rGrstripr&rZ ModuleNamerJrrrBrr)rrA file_pathr!r!r" open_modules   zEditorWindow.open_modulecCs |dSrN)rNrr!r!r"rszEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,|}|dur,dSddlm}||j|dS)NZPyShellEditorWindowrOr)browser) rr __class____name__rNidlelibrOZ ModuleBrowserrs)rrQrrOr!r!r"rs  z EditorWindow.open_module_browsercCsddlm}||jdS)Nr) pathbrowserrO)rRrSZ PathBrowserrs)rrQrSr!r!r"rs  zEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dddS)Nrz-cz,from turtledemo.__main__ import main; main()F)shellrO) subprocessr executablePopen)rrQrUcmdr!r!r"rszEditorWindow.open_turtle_democCsN|durJ|dkrJ|jdd||jddd|jddd|dS)Nrrz%d.0rrrcz insert +1l)rGrrrcenter)rrKr!r!r"gotolines zEditorWindow.gotolinecCs`|rtj|rdStjtj|\}}tj|tvr@dS|jdd}| do^d|vS)NTrz 1.0 lineendz#!Zpython) rirjrosplitextrnormcaserrGr startswith)rrbaseextrr!r!r"rszEditorWindow.ispythonsourcecCs|jr|j|d|_dSr)rrZunregister_maybe_terminater4r!r!r" close_hooks zEditorWindow.close_hookcCs ||_dSr)r`)rr`r!r!r"set_close_hookszEditorWindow.set_close_hookcCs2|jr|j|||j||dSr)rrZfilename_changed_editrrvZupdate_windowlist_registryrr4r!r!r"rs   z!EditorWindow.filename_change_hookcCsV|jr dS||jjr"||_|jrR|j|j|j|j|j|jdSr) rrrrr&r removefilterrrr4r!r!r" _addcolorizer s zEditorWindow._addcolorizercCs,|js dS|j|j|jd|_dSr)rZ removecolorsrrbr4r!r!r" _rmcolorizers  zEditorWindow._rmcolorizercCsH||t|j|jdur0|j|jdurD|jdSr) rdrcr$r'rGrZupdate_highlight_colorsrZ update_colorsr4r!r!r"rs    zEditorWindow.ResetColorizer_cCsp|d|||}|r6||jvr6|d|d|d||krR|d|n|d|d||dS)NERRORz wordstart rz+1c)rr IDENTCHARSrr)rrGposcharr!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`)rZ cursorblinkr!r!r"r9s  z EditorWindow.update_cursor_blinkcCsN|jdur|j|jdur(|jt|jdd}||jd<|dS)NrBr$r])rZ update_fontrrrrsrGr)rZnew_fontr!r!r" ResetFontCs     zEditorWindow.ResetFontcCs|t|j_}|D]\}}|jj|g|Rq|D]8}t|}|r>|D]\}}|jj|g|RqXq>dSr) rGetCurrentKeySetr+default_keydefsitemsrGZ event_deleteget_standard_extension_namesGetExtensionBindings)rkeydefsrQkeylist extensionNamexkeydefsr!r!r"RemoveKeybindingsTs  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)NrrVrZ acceleratorr r?)rw)rrmr+rnrrprqmenudefsrrrrrrFZ entrycgetget_acceleratorr) rrrrtruZ menuEventDictr>r+Z menubarItemrcrZaccelZitemNamerQr!r!r"ApplyKeybindings`s<      $        zEditorWindow.ApplyKeybindingscCs|jstjddddd|_dS)NrBr^z num-spacesrDrE)rrr~rr4r!r!r"rs z#EditorWindow.set_notabs_indentwidthcCs|t}|jd}|t}||jkr8||jd||rn||D]$}||d}|j |d|dqH||jd<dS)Nr rVrr1) rZGetAllExtraHelpSourcesListrrrrrr"_EditorWindow__extra_help_callbackr2)rZ help_listZhelpmenuZhelpmenu_lengthentryrXr!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]rirjrqrrmr?r@rrrrGrArB)helpfilerCr4r!r"display_extra_helps   z>EditorWindow.__extra_help_callback..display_extra_helpr!)rr~rr!r4r"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*errorsrgrrdcsg|]}|vr|qSr!r!).0rjZ bad_pathsr!r" rSz9EditorWindow.update_recent_files_list..Z1234567890ABCDEFGHIJKwrecentfiles_messageFTz IDLE Warningz)Cannot save Recent Files list to disk. z Select OK to continue.r<r)r rZr )rzrirjrrB readlinesabspathremoverappendr writelinesr@rrsrr showwarningrGrvryrrr enumeraterstrip#_EditorWindow__recent_file_callbackr2)rnew_fileZrf_listrMZ rf_list_filerjZulcharsZrf_fileerrinstancer>i file_namecallbackr!rr"rs\&   .   z%EditorWindow.update_recent_files_listcs|ffdd }|S)Ncsjj|ddS)N)ZeditFile)rrB)Z fn_closurer4r!r"open_recent_filesz=EditorWindow.__recent_file_callback..open_recent_filer!)rrrr!r4r"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_savedrvZwm_titleZ wm_iconname)rZshortlongr=Ziconr!r!r"rs  zEditorWindow.saved_change_hookcCs |jSr)rrr4r!r!r"rszEditorWindow.get_savedcCs|j|dSr)r set_saved)rflagr!r!r"rszEditorWindow.set_savedcCs|jdSr)r reset_undor4r!r!r"rszEditorWindow.reset_undocCs|jj}|rtj|SdS)Nr)rrrirjr)rrr!r!r"rszEditorWindow.short_titlecCs |jjp dS)Nr?)rrr4r!r!r"rszEditorWindow.long_titlecCs |dSrN)rYrr!r!r"rsz EditorWindow.center_insert_eventrcCsH|j}|\}}||}||}td||d}|t|dS)NrVr=)rGgetwindowlinesrmaxrr)rmarkrGrvbotrKrIZnewtopr!r!r"rYs   zEditorWindow.centercCsN|j}|d}|d}||krF|dkrFt|d}||d}||fS)Nrz@0,65535rVrI)rGrZ winfo_heightrD)rrGrvrrIr!r!r"r s    zEditorWindow.getwindowlinescCs|j}tt||Sr)rGrDrr)rrrGr!r!r"rszEditorWindow.getlinenocCs(|j}td|}ttt|S)Nz(\d+)x(\d+)\+(-?\d+)\+(-?\d+))rvZ wm_geometryrematchlistrrDgroups)rZgeommr!r!r" get_geometrys  zEditorWindow.get_geometrycCs |dSrN)rrr!r!r"r szEditorWindow.close_eventcCsH|jrD|s:|jdkr&|j|j|j|jSdS)Nr6)rrrvrZ deiconifylowerZlift maybesaver4r!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_extensionsrrrrGrxrrvZdestroyr`r4r!r!r"r6s"     zEditorWindow._closecCsi|_|dSr) extensionsload_standard_extensionsr4r!r!r"rJszEditorWindow.load_extensionscCs0t|jD]}t|dr|qi|_dS)Nr)rrvaluesrr)rinsr!r!r"rNs  zEditorWindow.unload_extensionscCsD|D]6}z||Wqtdt|tYq0qdS)NzFailed to load extension)rpload_extensionprintrepr traceback print_exc)rrAr!r!r"rTs  z%EditorWindow.load_standard_extensionscCs tjddS)NT)Z editor_only)rZ GetExtensionsr4r!r!r"rp\sz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc Cs6|j||}z.command)r r rZrwvariable)r r rZrw) r+rxrnrrGrrrry get_var_objZ BooleanVarZadd_checkbuttonr2)rrxrrrrGZmnameZ entrylistr>r|r r,Z checkbuttonr rwrZvarr!r!r"rs<       zEditorWindow.fill_menuscCs&||}|r|}|St|dSr)rr NameError)rrArvaluer!r!r"getvars  zEditorWindow.getvarcCs(|||}|r||nt|dSr)rrr)rrArvartyperr!r!r"setvars  zEditorWindow.setvarcCs,|j|}|s(|r(||j|j|<}|Sr)rxrrG)rrArrr!r!r"rs zEditorWindow.get_var_objcCs,|jr$|jd|p"d|j|vSdSdS)NZTODOSTRINGrV)rrG tag_prevrangeZ tag_names)rZ text_indexr!r!r"is_char_in_strings zEditorWindow.is_char_in_stringcCs<z"|jd}|jd}||fWSty6YdS0dS)Nrr)NNr7)rrrr!r!r"get_selection_indicess     z"EditorWindow.get_selection_indicescCs|jdp t}t|S)Ntabs)rGTK_TABWIDTH_DEFAULTrD)rcurrentr!r!r"get_tk_tabwidthszEditorWindow.get_tk_tabwidthc CsB|j}||kr>|jdd|dd|jd|}|j|ddS)Nr]rz -displayofn)r)rGrrr8ZmasterZ configure)rZ newtabwidthrGZpixelsr!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)NrrOrr?rrz insert-1crd rVrz insert-%dcr)rGrrrrrZbellrr expandtabsrr{rrr) rrQrGrrcharsrZhaveZwantZ 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)NrrrrrO)rGrr index2linerrrrrrget_line_indentrr reindent_torrrrr) rrQrGrrprefixrawZ 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) NrrrrrVrgrOrdzinsert - %d charsrIZconsoler)(rGrrrrrrrrrr{rrrZParserrrrrrZset_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)rrQrGrrrrrindentlnor%contextZstartatZ startatindexZrawtextZbodrrr!r!r"rLs       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)rGrrrrrr)rr\rGr!r!r"rs zEditorWindow.reindent_tocCsPt|j|j\}}|r@|r@t||j\}}t||j\}}nd}}||SNr)IndentSearcherrGrrr)ropenerZindentedrZ indentsmallZ indentlarger!r!r"rs zEditorWindow.guess_indentcCsN|jdurdS|jjr&|jd}n|jd}|jdd|dddS)NZShowZHiderergz Line Numbers)r>rr )rZis_shownZ hide_sidebarZ show_sidebarr)rrQZ 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)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.zoomheightr8rgetfilesystemencodingZfilesystemencodingrhrrrrrrrrrr rrrrrr'rr)r(r5r3r9rrrrrrrrrrrrrrrrrrrNrrrrrZrr`rarrcrdrstring ascii_lettersdigitsrhrkrrlrvrzrrr{rrrrrrrrrrYrrrrrrrrrrrprrrrrrrrrrrrrrrrrrrrr!r!r!r"r$2s               +    %              $ .     %     ,#v  r$cCs tt|Sr)rDr)rr!r!r"rsrz[ \t]*cCs$t|}|t||fSr)_line_indent_rerrcrgroupr)rrrr!r!r"rs rc@s8eZdZddZddZejejdfddZdd Z d S) rcCs(||_||_d|_|_d|_|_dSr)rGrrfinished blkopenline indentedline)rrGrr!r!r"rs zIndentSearcher.__init__cCsL|jr dS|jd}|_t|d}|j|ddr:dS|j||dS)Nr?rVrIz>=rcz lineend+1c)rrrrGrr)rrrr!r!r"readlines zIndentSearcher.readline)classdefforiftrywhilec Cs>|jrn2||kr ||vr ||_n||kr:|jr:||_d|_dS)NrV)rrr) rrFtokenstartrcrINDENTNAMEZOPENERSr!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"r2s zIndentSearcher.runN) rQrrrrrrrrrr!r!r!r"rs  rcCs6|d}|dkr.|d|||dd}||fS)NrerrV)rH)srr!r!r"rDs r[]/)Z bracketleftZ bracketrightZslashcCs||}|rtr"|dvr"dS|d}tddd|}tddd|}td d|}td d |}td d |}tdd|}tdd|}tdd|}tdd|}|S)N>rTrMrUr?rz-[a-z]\bcSs |Sr)rupperrr!r!r"rR]rSz!get_accelerator..z\b\w+\bcSst||Sr)keynamesrrrr!r!r"rR^rSzKey-ZCancelz Ctrl-BreakzControl-zCtrl-r+z>sz                     Z  4