PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php:1) in /home/u866776246/domains/wisatalogung.com/public_html/uploads/produk/1775157541_x.php on line 131
B ydK@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Tddl m Z ddlmZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lm Z dd lm!Z!ddlm"Z"ddlm#Z#ddl$m%Z%ddlm&Z&dZ'de(Z)ejdkZ*ddZ+Gddde,Z-ddZ.e/dZ0ddZ1Gddde,Z2d d!Z3d"d#d$d%Z4d&d'Z5d(d)Z6d*d+Z7e8d,krdd-l9m:Z:e:d.d/d0d1dd2l;md;d<Z?dd=d>Z@dd?d@ZAddAdBZBddCdDZCdEdFZDdGdHZEdIdJZFddKdLZGddMdNZHdOdPZIdQdRZJdSdTZKdUdVZLdWdXZMdYdZZNd[d\ZOd]d^ZPd_d`ZQdadbZRdcddZSddedfZTddgdhZUddidjZVdkdlZWdmdnZXdodpZYdqdrZZdsdtZ[dudvZ\dwdxZ]dydzZ^e_j`e_jad{Zbd|d}Zcd~dZdddZeddZfddZgddZhddZiddZjdddZkddZlddZmddZnddZoddZpddZqddZrddZsdddZtddZudddZvddZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddiZddZdddZdddZddZddd„ZdddĄZddƄZddȄ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 CsH ddlm}tjdkrtjtjdd}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%| f||_&}|j&|j_'|(|)|j*d#|j+|j,d$|j-t./rt|,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}|rP|df}|dkr$dg}|dkr>||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 r6|||_tj#dddd^d r&||,d|jn|ddddS)Nr) ScriptBindingZDocz index.htmlZlinuxz 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!widthint)typetextZnoneZ wordprocessorheight)r=padxZwrapZhighlightthicknessr?ZtabstylerDZWM_DELETE_WINDOWz<>zz<2>z<3>z z z z z<>z<>z <>z<>z<>z<>z<>z<>z<>z<>cSsdS)Nbreakr)eventrrrz'EditorWindow.__init__..z<>z<>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 *Code Contextdisabledzline-numbers-defaultz<>z *Line Numbers)Zidlelib.runscriptr6r!help_urlospathjoinr base_prefixplatformcountrisdirr isfilenormpathflistrootMenumenubarrZListedTopleveltopvars tkinter_varsZ inversedict instance_dictrZuserdirrecent_files_pathprompt_last_lineFrame text_framerr< GetOptionr ZTextrBZfocused_widget createmenubarapply_bindingsZprotocolclosebind 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_eventr0fregionindent_region_eventZdedent_region_eventZcomment_region_eventZuncomment_region_eventZtabify_region_eventZuntabify_region_eventr1Ztoggle_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_indentwidthhasattrrTupdate_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_callbackpostwindowsmenu tkMessageBoxZaskyesnotkSimpleDialogZ askinteger showerror event_addr*Zautocomplete_eventZtry_open_completions_eventZforce_open_completions_eventr+Zexpand_word_eventr/Zformat_paragraph_eventr3Zflash_paren_eventZparen_closed_eventZcheck_module_eventZrun_module_eventZrun_custom_eventr2Z do_rstripr,ctipZtry_open_calltip_eventZrefresh_calltip_eventZforce_open_calltip_eventr5Zzoom_height_eventallow_code_contextr-Ztoggle_code_context_eventupdate_menu_stateallow_line_numbersr.toggle_line_numbers_event)selfrefilenamekeyrfr6ZdochomeZpyverZbasepathZchmfilerirpr<r?Z text_optionsrBrindentsZ usespacesrrr is_py_srcr:rWZ autocompleteZ parenmatchZ scriptbindingrrrr__init__Hs                                                     zEditorWindow.__init__cCs |dS)N)r)rrGrrrrx`szEditorWindow.handle_winconfigcCs^|j}tt|jj|d|dg}|d|}t||ddd}|||_ dS)NZborderrEr9rQ)rQ0) rBsummaptkZgetintZcgetZ winfo_widthrmeasurer?)rrBZ inner_paddingZ pixel_widthZzero_char_widthrrrrcs zEditorWindow.set_widthcCs|j\}}|j|dS)NrF)rZdefaultfilenamerenew)rrGdirnamebasenamerrrrps zEditorWindow.new_callbackcCs|jd@dkr|jdkrdS|jdrd|jdddrd|jdddrdt|jddd }n:|jdd}x*tt |D]}||d krPqWt |}t|jd dd }||krd}d t |d }|jd @dkr|j dddn|jds|j dd n@|j|jdd|jd rD|j ddn|j dd|j|}|jd}|j|d|r||}}|j ddd|j d|||j d ||jd dS)NrZHomeZiomarkz<=zinsert lineendzinsert linestart.rJ)  insertzinsert linestart+cselz1.0rWz sel.firstZ my_anchorrF)stateZkeysymrBrcomparer@splitrrangelenstr tag_removemark_settag_addsee)rrGZinsertptlineZlineatdestfirstlastrrrrus@      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)NrJZgrey75)rDZ borderwidthZ backgroundrZ _padding1z )rKrPzCol: ?rzLn: ?)rKrLz<>z z)r)ri status_barrorr` set_labelZRIGHTrZBOTTOMXrBruset_line_and_columnrZ after_idle)rseprrrrs zEditorWindow.set_status_barcCs>|jtd\}}|jdd||jdd|dS)NrrPzCol: %srzLn: %s)rBrZINSERTrrr)rrGrrPrrrrsz EditorWindow.set_line_and_column)fileZ_File)editZ_Edit)formatZF_ormat)runZ_Run)rYZ_Options)rZ_Window)rZ_HelpcCs|j}i|_}xD|jD]:\}}t|\}}t||dd||<}|j|||dqWtrt|ddd|d<}|jd|d|t|jdd|_ |jd j d d d|j d |jd  t |_ |dS)Nr)r=tearoff)labelr: underlineZappleZ applicationZIDLE)rr:)rrr7z Recent Files)rrr:r)rhr menu_specsprepstrrgZ add_cascader Z isCarbonTk fill_menusrecent_files_menuZinsert_cascaderENDbase_helpmenu_lengthreset_help_menu_entries)rZmbarrr=rrr:rrrrrs"   zEditorWindow.createmenubarcCsJ|jd}|d}|dkr d}||jkr<||jd|t|dS)NrrWrXrJ)rrrdeleterZadd_windows_to_menu)rr:rWrrrrs   zEditorWindow.postwindowsmenucCs|j|}|j||ddS)z$Update label for menu item at index.)rN)r entryconfig)rr:rrmenuitemrrrupdate_menu_labels zEditorWindow.update_menu_labelcCs|j|}|j||ddS)z$Update state for menu item at index.)rN)rr)rr:rrrrrrrs zEditorWindow.update_menu_statecGsR|dkr>NcCsjt|jdd}xP|jD]F}|d|d}}|dk rT|j|fdd}|j||dq|qW||_dS)Nr)rrJcSs||dS)N)event_generate)rBrrrrrN"sz(EditorWindow.make_rmenu..command)rrN)rgrBr add_commandrr )rr rrrrNrrrrs  zEditorWindow.make_rmenucCs|S)N)rmenu_check_copy)rrrrrmenu_check_cut)szEditorWindow.rmenu_check_cutcCs6y|jd}Wntk r$dSX|r.dSdSdS)Nz sel.firstrZnormal)rBrr )rZindxrrrr,s zEditorWindow.rmenu_check_copycCs6y|jjd|jdWntk r,dSXdSdS)Nztk::GetSelectionZ CLIPBOARDrZr)rBrcallr )rrrrrmenu_check_paste4s zEditorWindow.rmenu_check_pastecCst|jdS)zHandle Help 'About IDLE' event.rF)r Z AboutDialogri)rrGrrrr<s zEditorWindow.about_dialogcCst|jddS)z&Handle Options 'Configure IDLE' event.ZSettingsrF)rZ ConfigDialogri)rrGrrrrBszEditorWindow.config_dialogcCs"|jr|j}n|j}t|dS)zHandle Help 'IDLE Help' event.rF)rfrirZ show_idlehelp)rrGparentrrrr}Hs  zEditorWindow.help_dialogc Csntjdddkr^yt|jWqjtk rZ}ztjdt||j dWdd}~XYqjXn t |jdS)Nr7r8zDocument Start Failure)titlemessagerrF) rr`r\ startfiler[OSErrorrrrrB webbrowseropen)rrGwhyrrrr~Rs$ zEditorWindow.python_docscCs|jddS)Nz<>rF)rBr)rrGrrrry]s zEditorWindow.cutcCs |jdsdS|jddS)Nrz<>rF)rBZ tag_rangesr)rrGrrrrzas  zEditorWindow.copycCs|jd|jddS)Nz <>rrF)rBrr)rrGrrrr{hs  zEditorWindow.pastecCs.|jddd|jdd|jddS)Nrz1.0zend-1crrF)rBrrr)rrGrrrrms zEditorWindow.select_allcCs |jddd|jddS)Nrz1.0rWrrF)rBrr)rrGrrrrss zEditorWindow.remove_selectioncs*|jj|jjdfdd}|S)zCursor move begins at start or end of selection When a left/right cursor key is pressed create and return to Tkinter a function which causes a cursor move from the associated edge of the selection. )z sel.first+1cz sel.last-1ccsB|jd@dkr>yddWntk r<YnXdS)NrCrz sel.firstr)rr )rG) edge_index edges_tableself_text_indexself_text_mark_setrr move_at_edges z.move_at_edge)rBrr)rr#r'r)r#r$r%r&rrxs z&EditorWindow.move_at_edge_if_selectioncCs|jddS)Nz rF)rBr)rrGrrrrs zEditorWindow.del_word_leftcCs|jddS)NzrF)rBr)rrGrrrrs zEditorWindow.del_word_rightcCst|jdS)NrF)rfindrB)rrGrrrrs zEditorWindow.find_eventcCst|jdS)NrF)rZ find_againrB)rrGrrrrs zEditorWindow.find_again_eventcCst|jdS)NrF)rZfind_selectionrB)rrGrrrrs z!EditorWindow.find_selection_eventcCst|j|j|jdS)NrF)rrBrre)rrGrrrrsz EditorWindow.find_in_files_eventcCst|jdS)NrF)rrB)rrGrrrrs zEditorWindow.replace_eventcCsT|j}t|ddj}|dk rP|ddd|d|d|d|dS) Nz Go To Linez/Enter a positive integer ('big' = end of file):rz1.0rWrz.0rF)rBr ZGotoresultrrrr)rrGrBlinenorrrrs zEditorWindow.goto_line_eventcCspy|jdd}Wntk r.d}YnXt|jdd|j}|dk rl|jr`|j|n |j ||S)zGet 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. z sel.firstzsel.lastr;z Open ModulezAEnter the name of a Python module to search on sys.path and open:N) rBrstripr r Z ModuleNamer)rer!rr)rr= file_pathrrr open_modules  zEditorWindow.open_modulecCs |dS)NrF)r-)rrGrrrrszEditorWindow.open_module_eventcCsJ|jj}|jjdkr|s,|}|dkr,dSddlm}||j|dS)NZPyShellEditorWindowrFr)browser) rr __class____name__r-idlelibr.Z ModuleBrowserrf)rrGrr.rrrrs  z EditorWindow.open_module_browsercCsddlm}||jdS)Nr) pathbrowserrF)r1r2Z PathBrowserrf)rrGr2rrrrs  zEditorWindow.open_path_browsercCs&ddl}tjddg}|j|dddS)Nrz-cz,from turtledemo.__main__ import main; main()F)shellrF) subprocessr executablePopen)rrGr4cmdrrrrs zEditorWindow.open_turtle_democCsN|dk rJ|dkrJ|jdd||jddd|jddd|dS)Nrrz%d.0rz1.0rWz insert +1l)rBrrrcenter)rr*rrrgotolines zEditorWindow.gotolinecCs`|rtj|rdStjtj|\}}tj|dkr@dS|jdd}|do^d|kS)NT)z.pyz.pywz1.0z 1.0 lineendz#!python) r\r]rbsplitextrnormcaserBr startswith)rrbaseZextrrrrrszEditorWindow.ispythonsourcecCs|jr|j|d|_dS)N)reZunregister_maybe_terminate)rrrr close_hooks zEditorWindow.close_hookcCs ||_dS)N)r?)rr?rrrset_close_hookszEditorWindow.set_close_hookcCs2|jr|j|||j||dS)N)reZfilename_changed_editrriZupdate_windowlist_registryr)rrrrrs   z!EditorWindow.filename_change_hookcCsV|jr dS||jjr"||_|jrR|j|j|j|j|j|jdS)N) rrrrr#r removefilterrr)rrrr _addcolorizer s zEditorWindow._addcolorizercCs,|js dS|j|j|jd|_dS)N)rZ removecolorsrrA)rrrr _rmcolorizers  zEditorWindow._rmcolorizercCsH||t|j|jdk r0|j|jdk rD|jdS)zUpdate the color themeN) rCrBr!r$rBrZupdate_highlight_colorsrZ update_colors)rrrrrs    zEditorWindow.ResetColorizer_cCsp|d|||}|r6||jkr6|d|d|d||krR|d|n|d|d||dS)NZERRORz wordstart rz+1c)rr IDENTCHARSrr)rrBposcharrrrcolorize_syntax_error+s  z"EditorWindow.colorize_syntax_errorcCs2tjddddd}|s"d|jd<n tj|jd<dS) z&Update the cursor blink configuration.r>r!z cursor-blinkrS)rArrUN)rrqrBrT)rZ cursorblinkrrrr6s  z EditorWindow.update_cursor_blinkcCsN|jdk r|j|jdk r(|jt|jdd}||jd<|dS)z.Update the text widgets' font if it is changedNr>r!rQ)rZ update_fontrrrrfrBr)rZnew_fontrrr ResetFont@s     zEditorWindow.ResetFontcCst|j_}x&|D]\}}|jj|f|qWxF|D]:}t|}|rBx&|D]\}}|jj|f|q^WqBWdS)z/Remove the keybindings before they are changed.N) rGetCurrentKeySetr(default_keydefsitemsrBZ event_deleteget_standard_extension_namesGetExtensionBindings)rkeydefsrGkeylist extensionNamexkeydefsrrrRemoveKeybindingsQs zEditorWindow.RemoveKeybindingsc CsVt|j_}|x(|D]}t|}|r"||q"Wi}xR|jjD]F}i||d<x4|dD](}|rj|d||dt|dd<qjWqPWx|j D]}|j |}| t }|dkrq|d7}xt d|D]r} | | dkr|| d} | r|| d} d} ||kr.| ||kr.||| } | rt|| } |j| | dqWqWdS) z-Update the keybindings after they are changedrrJNrN acceleratorrr;)rU)rrKr(rLrsrNrOmenudefsrrrrrrAZ entrycgetget_acceleratorr) rrPrRrSZ menuEventDictr:rZ menubarItemrWrZaccelZitemNamerGrrrApplyKeybindings]s<  (        zEditorWindow.ApplyKeybindingscCs|jstjddddd|_dS)zCUpdate the indentwidth if changed and not using tabs in this windowr>rRz num-spacesr@)rAN)rrrqr)rrrrrs z#EditorWindow.set_notabs_indentwidthcCst}|jd}|t}||jkr8||jd||rr|x,|D]$}||d}|j |d|dqJW||jd<dS)z3Update the additional help entries on the Help menurrJr)rrNN) rZGetAllExtraHelpSourcesListrrrrrr"_EditorWindow__extra_help_callbackr)rZ help_listZhelpmenuZhelpmenu_lengthentryr7rrrrs    z$EditorWindow.reset_help_menu_entriescs|ffdd }|S)zCCreate a callback with the helpfile value frozen at definition timec s|dstj|}tjdddkrryt|Wq|tk rn}ztj dt |j dWdd}~XYq|Xn t |dS)N)ZwwwZhttpr7r8zDocument Start Failure)rrr)r=r\r]rdrr`rrrrrrBr r!)helpfiler")rrrdisplay_extra_helps  $z>EditorWindow.__extra_help_callback..display_extra_helpr)rr[r\r)rrZ__extra_help_callbacks z"EditorWindow.__extra_help_callbackc sg}|j}|r>tj|r>t|dddd}|}WdQRX|rptj|d}||krd|||d|gx2|D]*}d|kstj|dd sz |qzWfd d |D}d }|dt |}|rVy*t|d ddd}| |WdQRXWnVt k rT}z6t |jddsDd|j_tjdd|d|jdWdd}~XYnXxj|jjD]^} | j} | dtxDt|D]8\} } | } | | } | j|| d| | ddqWq`WdS)z/Load and update the recent files list and menusrutf_8r)r'errorsNrErrXcsg|]}|kr|qSrr).0r]) bad_pathsrr sz9EditorWindow.update_recent_files_list..Z1234567890ABCDEFGHIJKwrecentfiles_messageFTz IDLE Warningz)Cannot save Recent Files list to disk. z Select OK to continue.)rrrr)rrNr)rmr\r]rr! readlinesabspathremoverappendr writelinesrrrfrer showwarningrBrirlrrr enumeraterstrip#_EditorWindow__recent_file_callbackr)rnew_fileZrf_listr,Z rf_list_filer]ZulcharsZrf_fileerrinstancer:i file_namecallbackr)rbrrsL        z%EditorWindow.update_recent_files_listcs|ffdd }|S)Ncsjj|ddS)N)ZeditFile)rr!)Z fn_closure)rrropen_recent_filesz=EditorWindow.__recent_file_callback..open_recent_filer)rrsrur)rrZ__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_savedriZwm_titleZ wm_iconname)rZshortZlongrZiconrrrrs  zEditorWindow.saved_change_hookcCs |jS)N)rrz)rrrrrzszEditorWindow.get_savedcCs|j|dS)N)r set_saved)rflagrrrr{szEditorWindow.set_savedcCs|jdS)N)r reset_undo)rrrrr}szEditorWindow.reset_undocCs|jj}|rtj|SdS)Nrv)rrr\r]r)rrrrrrwszEditorWindow.short_titlecCs |jjp dS)Nr;)rr)rrrrrxszEditorWindow.long_titlecCs |dS)NrF)r8)rrGrrrr|sz EditorWindow.center_insert_eventrcCsH|j}|\}}||}||}td||d}|t|dS)NrJr9)rBgetwindowlinesrmaxrr)rmarkrBribotr*rDZnewtoprrrr8s   zEditorWindow.centercCsN|j}|d}|d}||krF|dkrFt|d}||d}||fS)Nz@0,0z@0,65535rJrD)rBrZ winfo_heightr@)rrBrirrDrrrr~ s    zEditorWindow.getwindowlinescCs|j}tt||S)N)rBr@rr)rrrBrrrrszEditorWindow.getlinenocCs(|j}td|}ttt|S)zReturn (width, height, x, y)z(\d+)x(\d+)\+(-?\d+)\+(-?\d+))riZ wm_geometryrematchlistrr@groups)rZgeommrrr get_geometrys  zEditorWindow.get_geometrycCs |dS)NrF)rt)rrGrrrrvszEditorWindow.close_eventcCsH|jrD|s:|jdkr&|j|j|j|jSdS)Nr)rrzrirZ deiconifylowerZlift maybesave)rrrrr!s   zEditorWindow.maybesavecCs:y |}t|dkr||Stk r4YnXdS)NZcancel)rr_closeAttributeError)rZreplyrrrrt*s zEditorWindow.closecCs|jjr|j|jjdt|j||jd|_d|_|j rX|j d|_ d|_ d|_ |j d|_ |j |jr|dS)N)ro)rrrrZunregister_callbackrunload_extensionsrtrrrBrkrriZdestroyr?)rrrrr3s"     zEditorWindow._closecCsi|_|dS)N) extensionsload_standard_extensions)rrrrrGszEditorWindow.load_extensionscCs4x(t|jD]}t|dr|qWi|_dS)Nrt)rrvaluesrrt)rinsrrrrKs  zEditorWindow.unload_extensionscCsHxB|D]6}y||Wq tdt|tYq Xq WdS)NzFailed to load extension)rNload_extensionprintrepr traceback print_exc)rr=rrrrQs z%EditorWindow.load_standard_extensionscCs tjddS)NT)Z editor_only)rZ GetExtensions)rrrrrNYsz)EditorWindow.get_standard_extension_namesZZzDummyZzzdummyc CsF|j||}y>ytjd|td}Wn"ttfk rHt|}YnXWn tk rltd|YnXt||}t |}t |dr| |j |||}||j|<|rB||x|D]|}|dd}x |dddkr|dd}qWx"|d dd kr|dd }qW|d }t ||r|j|t||qWdS) Nr)packagez Failed to import extension: rV-rDrJrrXrZ_event)extfilesr importlib import_module __package__ ImportError TypeErrorrrrrOrrrVrrsrrBru) rr=ZfnamemodclsrPrZveventZ methodnamerrrr`s4         zEditorWindow.load_extensioncCsJ|dkr|jj}|j}||_x(|D]\}}|r&|j|f|q&WdS)N)r(rLrBrPrMr)rrPrBrGrQrrrrs|szEditorWindow.apply_bindingsc Cs|dkr|jj}|dkr |jj}|j}|j}x|D]\}}||}|sJq2x|D]}|sb|qP|\} } | dddk} | r| dd} t| \} } t|| } || fdd}| r| | t }|j | | || |dqP|j | | || dqPWq2WdS)zAdd appropriate entries to the menus and submenus Menus that are absent or None in self.menudict are ignored. NrJ!cSs||dS)N)r)rBrrrrrNsz(EditorWindow.fill_menus..command)rrrNrUZvariable)rrrNrU) r(rVrLrrBrrrrW get_var_objZ BooleanVarZadd_checkbuttonr)rrVrPrrBZmnameZ entrylistr:rZrrZ checkbuttonrrUrNvarrrrrs8        zEditorWindow.fill_menuscCs&||}|r|}|St|dS)N)rr NameError)rr=rvaluerrrgetvars  zEditorWindow.getvarcCs(|||}|r||nt|dS)N)rrr)rr=rvartyperrrrsetvars  zEditorWindow.setvarcCs,|j|}|s(|r(||j|j|<}|S)N)rkrrB)rr=rrrrrrs zEditorWindow.get_var_objcCs,|jr$|jd|p"d|j|kSdSdS)NZTODOSTRINGrJ)rrB tag_prevrangeZ tag_names)rZ text_indexrrris_char_in_stringszEditorWindow.is_char_in_stringcCs:y |jd}|jd}||fStk r4dSXdS)Nz sel.firstzsel.last)NN)rBrr )rrrrrrget_selection_indicess   z"EditorWindow.get_selection_indicescCs|jdp t}t|S)Ntabs)rBTK_TABWIDTH_DEFAULTr@)rZcurrentrrrget_tk_tabwidthszEditorWindow.get_tk_tabwidthc CsB|j}||kr>|jdd|dd|jd|}|j|ddS)NrQrz -displayofn)r)rBrrrZmasterZ configure)rZ newtabwidthrBZpixelsrrrset_tk_tabwidths   zEditorWindow.set_tk_tabwidthcCsP|r@|r@|}d|kr$dkr.nn||_|j|jkr@d|_||jdS)Nr9rF) guess_indentrrrr)rrZguessrrrrrrs z#EditorWindow.set_indentation_paramsc CsP|j}|\}}|r6|r6||||d|dS|dd}|dkrp|dddrd|dn|dS|dd kr|ddS|j}t| |}|d kst |d |j |j }d } xJ||j krP|dd}| d } t| |}||ks|dd krPqW| |d | d||krD|dd |||dS)NrrFzinsert linestartr;rz1.0z insert-1crXz rrJz insert-%dcr)rBrrrrrZbellrr expandtabsAssertionErrorrrnrrr) rrGrBrrcharsrZhaveZwantZ ncharsdeletedrrrrsD           z"EditorWindow.smart_backspace_eventc Cs|j}|\}}|z|rX|rXt|t|kr@|j|S||||d||dd}t ||j \}}|t |kr| ||j n>|jrd}n&t ||j }|j } d| || }|d||ddS|XdS)Nrzinsert linestartrrrF)rBrr index2linerrrrrget_line_indentrr reindent_torrrrrr) rrGrBrrprefixrawZ effectiveZpadrrrrr&s,        zEditorWindow.smart_indent_eventc Cs|j}|\}}|z|r>|r>||||d||dd}dt|}}x ||krx||dkrx|d7}qZW||kr|dddS|d|}d}x2|r|d dkr||jkr|dd }|d7}qW|r|d |dx|ddkr|dqW|ddt | d} t |j |j} |jsxf|jD]\} t| | d} t| d } || d}| || || }|dk s| dkrDPqDW| |pdn@|d d}|r|d} nd } || d}| || d| }|t jkr|t jkrn|t jkr2|d|nh|t jkrN|| nL|t jkr| dkrv|d|n|| ndst!d|fdS| "}|d|| #r|$|n|r| %r|&|dS|'d|(XdS)aInsert 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. rzinsert linestartrz rJrErFNrXzinsert - %d charsz.0Zconsolez1.0zbogus continuation type %r))rBrrrrrrrrnrrr ZParserrrrrrZset_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_indentrZget_base_indent_stringZis_block_openerrZis_block_closerrrr)rrGrBrrrrrrindentZlnor contextZstartatZ startatindexZrawtextZbodr]rrrrrIs                               z%EditorWindow.newline_and_indent_eventcCs||jfdd}|S)NcSs||d|S)Nz+%dcr)offsetZ _startindexZ_icisrrrinnersz6EditorWindow._build_char_in_string_func..inner)r)rZ startindexrrrrrsz'EditorWindow._build_char_in_string_funccCs2|jr&t||j\}}d|d|Sd|SdS)Nrr)rdivmodr)rrZntabsZnspacesrrr _make_blanksszEditorWindow._make_blankscCsJ|j}||dddr(|dd|r>|d|||dS)Nzinsert linestartz!=r)rBrrrrrr)rrPrBrrrrs zEditorWindow.reindent_tocCsPt|j|j\}}|r@|r@t||j\}}t||j\}}nd}}||S)Nr)IndentSearcherrBrrr)ropenerZindentedrZ indentsmallZ indentlargerrrrs zEditorWindow.guess_indentcCsN|jdkrdS|jjr&|jd}n|jd}|jdd|dddS)NZShowZHiderYz *Line Numbersz Line Numbers)r:rr)rZis_shownZ hide_sidebarZ show_sidebarr)rrGZ menu_labelrrrrs   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)r0 __module__ __qualname__Zidlelib.percolatorr"Zidlelib.colorizerr#r$Z idlelib.undor%Zidlelib.iomenur&r'r1r(Zidlelib.statusbarr)Zidlelib.autocompleter*Zidlelib.autoexpandr+Zidlelib.calltipr,Zidlelib.codecontextr-Zidlelib.sidebarr.Zidlelib.formatr/r0r1r2Zidlelib.parenmatchr3Zidlelib.squeezerr4Zidlelib.zoomheightr5rgetfilesystemencodingZfilesystemencodingr[rrrrxrrrrrrrrrrrrr rwrrrrrrrr}r~ryrzr{rrrrrrrrrrrr-rrrrr9rr?r@rrBrCrstringZ ascii_lettersZdigitsrFrIrrJrTrXrrrYrrnrrzr{r}rwrxr|r8r~rrrvrrtrrrrrNrrrsrrrrrrrrrrrrrrrrrrrrrr!1s               +   %              $ .     %     ,#v  r!cCs tt|S)N)r@r)rrrrrsrz[ \t]*cCs$t|}|t||fS)zReturn 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_rerrWrgroupr)rrrrrrrs rc@s8eZdZddZddZejejdfddZdd Z d S) rcCs(||_||_d|_|_d|_|_dS)Nr)rBrrrfinished blkopenline indentedline)rrBrrrrrs zIndentSearcher.__init__cCsL|jr dS|jd}|_t|d}|j|ddr:dS|j||dS)Nr;rJz.0z>=rWz lineend+1c)rrrrrBrr)rrrrrrrreadlines zIndentSearcher.readline)classdefforiftrywhilec Cs>|jrn2||kr ||kr ||_n||kr:|jr:||_d|_dS)NrJ)rrr) rrAtokenstartrWrINDENTNAMEZOPENERSrrr tokeneater#szIndentSearcher.tokeneaterc Csltj}|jt_zHy(t|j}x|D]}|j|q$WWntjtfk rRYnXWd|t_X|j|j fS)N) tokenizetabsizergenerate_tokensrr TokenError SyntaxErrorrr)rZ save_tabsizetokensrrrrr/s   zIndentSearcher.runN) r0rrrrrrrrrrrrrr s   rcCs6|d}|dkr.|d|||dd}||fS)NrDrrJ)r()srrrrrrAs r[]/)Z bracketleftZ bracketrightZslashcCs||}|rtr"|dkr"dS|d}tddd|}tddd|}td d|}td d |}td d |}tdd|}tdd|}tdd|}tdd|}|S)N><><> <>r;rz-[a-z]\bcSs |S)N)rupper)rrrrrHZrIz!get_accelerator..z\b\w+\bcSst||S)N)keynamesrr)rrrrrH[rIzKey-ZCancelz Ctrl-BreakzControl-zCtrl-r+z>zidlelib.idle_test.test_editorr9F) verbosityexit)r)=Z importlib.abcrimportlib.utilr\r`rrrrrr ZtkinterZ tkinter.fontrZ tkinter.ttkrZtkinter.simpledialogZ simpledialogrZtkinter.messageboxZ messageboxrZidlelib.configrr1rrrr r Zidlelib.multicallr r r rrZ idlelib.treerrrZpython_versionryrr objectr!rcompilerrrrrrWrrr0Zunittestr>Zidlelib.idle_test.htestrrrrrsv                    X  4