
    dT                     <   d Z dZddlZddlZddlmZ ddlmZ ddlmZ ej                  Z	ej                  Z
ej                  Zej                  Zej                  Zej                  Zej                  Zej                   Zej"                  Zej$                  Zej&                  Zej(                  Zej*                  Zej,                  Zej.                  Z ej0                         Zej4                  Z ej0                         Z ej0                         Z ej0                         Z ej0                         Z ej0                         Z ej0                         Z  ej0                         Z! ej0                         Z" ej0                         Z# ej0                         Z$ ej0                         Z% ej0                         Z& ej0                         Z' ej0                         Z( ej0                         Z) ej0                         Z* ej0                         Z+ ej0                         Z, ej0                         Z- ej0                         Z. ej0                         Z/ ej0                         Z0 ej0                         Z1 ej0                         Z2 ej0                         Z3ejh                  Z4 ej0                         Z5 ej0                         Z6 ej0                         Z7 ej0                         Z8 G d d	ejr                        Z9 G d
 d      Z: G d dejv                        Z<y)zBase frame with menu.z(Patrick K. O'Brien <pobrien@orbtech.com>    N   )VERSION)
editwindow)
dispatcherc                      e Zd ZdZdddej
                  ej                  ej                  dfdZd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d>d6Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?y)?FramezFrame with standard menu items.NEditorPyCrustc           	      T   t         j                  j                  | ||||||       | j                          | j	                  d       || _        ddlm} | j                  |j                  |             | j                          d| _        d| _        t        j                         | _        | j                  j                  t         j                          | j#                  t         j$                  | j&                         | j#                  t         j(                  | j*                         y)zCreate a Frame instance.r   r   )images)	shellNameFN)wxr   __init__CreateStatusBarSetStatusTextr    r   SetIcon	getPyIcon_Frame__createMenusiconizedfindDlgFindReplaceDatafindDataSetFlagsFR_DOWNBind	EVT_CLOSEOnCloseEVT_ICONIZE	OnIconize)	selfparentidtitlepossizestyler   r   s	            -/usr/lib/python3/dist-packages/wx/py/frame.pyr   zFrame.__init__A   s     	$E3eD7# V%%	%:;**,rzz*		",,-		"..$..1    c                 .    |j                         | _        y)zEvent handler for Iconize.N)
IsIconizedr   r"   events     r)   r!   zFrame.OnIconizeV   s    ((*r*   c                 $    | j                          y)zEvent handler for closing.N)Destroyr-   s     r)   r   zFrame.OnClose[   s    r*   c                 p4   t        j                         x}| _        |j                  t        dd       |j                  t
        dd       |j                          |j                  t        dd       |j                  t        dd       |j                          |j                  t        d	d
       |j                  t        dd       | j                  dv r|j                  t        dd       |j                          |j                  t        dd       |j                          |j                  t        dd       |j                          |j                  t        dd       t        j                         x}| _        |j                  t"        dd       |j                  t$        dd       |j                          |j                  t&        dd       |j                  t(        dd       |j                  t*        dd       |j                  t,        d d!       |j                  t.        d"d#       |j                          |j                  t0        d$d%       |j                  t2        d&d'       |j                          |j                  t4        d(d)       |j                  t6        d*d+       |j                  t8        d,d-       |j                  t:        d.d/       t        j                         x}| _        |j                  t>        d0d1t         j@                         |j                  tB        d2d3t         j@                         |j                  tD        d4d5       tG        | d6      r&|j                  tH        d7d8t         j@                         | j                  d9d:gk(  r&|j                  tJ        d;d<t         j@                         t        j                         x}| _&        |j                  tN        d=d>t         j@                         |j                  tP        d?d@t         j@                         |j                  tR        dAdBt         j@                         |j                  tT        dCdDt         j@                         t        j                         x}| _+        |j                  tX        dEdFt         j@                         |j                  tZ        dGdHt         j@                         t        j                         x}| _.        |j_                  | jL                  dIdJ       |j_                  | jV                  dKdL       |j                          t        j                         | _0        | j`                  j                  tb        dMdNt         j@                         | j`                  j                  td        dOdP       | j`                  j                  tf        dQdR       |j_                  | j`                  dSdT       t        j                         | _4        | jh                  j                  tj        dUdVt         j@                         | jh                  j                  tl        dWdX       | j                  dv r0| jh                  j                  tn        dYdZt         j@                         |j_                  | jh                  d[d\       t        j                         | _8        | j                  dv r0| jp                  j                  tr        d]d^t         j@                         | j                  d:k(  r0| jp                  j                  tt        d_d`t         j@                         | jp                  j                  tv        dadbt         j@                         | jp                  j                  tx        dcdd       | jp                  j                  tz        dedf       |j_                  | jp                  dgdh       t        j                         x}| _>        |j                  t~        didj       |j                          |j                  t        dkdl       t        j                         x}| _B        |j                  | j                  dm       |j                  | j                   dn       |j                  | j<                  do       |j                  | j\                  dp       |j                  | j|                  dq       | j                  |       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t
        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t"        r       | j                  t         j                  | j                  t$        r       | j                  t         j                  | j                  t&        r       | j                  t         j                  | j                  t(        r       | j                  t         j                  | j                  t*        r       | j                  t         j                  | j                  t,        r       | j                  t         j                  | j                  t.        r       | j                  t         j                  | j                  t0        r       | j                  t         j                  | j                  t2        r       | j                  t         j                  | j                  t4        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t~        r       | j                  t         j                  | j                  tN        r       | j                  t         j                  | j                  tP        r       | j                  t         j                  | j                  tR        r       | j                  t         j                  | j                  tT        r       | j                  t         j                  | j                  tX        r       | j                  t         j                  | j                  tZ        r       | j                  t         j                  | j                  t>        r       | j                  t         j                  | j                  tD        r       | j                  t         j                  | j                  tB        r       | j                  t         j                  | j                  tr        r       | j                  t         j                  | j                  tt        r       | j                  t         j                  | j                  tv        r       | j                  t         j                  | j                  tb        r       | j                  t         j                  | j                  td        r       | j                  t         j                  | j                  tf        r       | j                  t         j                  | j                  tx        r       | j                  t         j                  | j                  tz        r       | j                  t         j                  | j                  tl        r       | j                  t         j                  | j                  tj        r       | j                  t         j                  | j                  tn        r       | j                  t         j                  | j                  t6        r       | j                  t         j                  | j                  t8        r       | j                  t         j                  | j                  t:        r       | j                  t         j                  | j                  tH        r       | j                  t         j                  | j                  tJ        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t
        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t        r       | j                  t         j                  | j                  t"        r       | j                  t         j                  | j                  t$        r       | j                  t         j                  | j                  t&        r       | j                  t         j                  | j                  t(        r       | j                  t         j                  | j                  t*        r       | j                  t         j                  | j                  t,        r       | j                  t         j                  | j                  t.        r       | j                  t         j                  | j                  t0        r       | j                  t         j                  | j                  t2        r       | j                  t         j                  | j                  t4        r       | j                  t         j                  | j                  tN        r       | j                  t         j                  | j                  tP        r       | j                  t         j                  | j                  tR        r       | j                  t         j                  | j                  tT        r       | j                  t         j                  | j                  tX        r       | j                  t         j                  | j                  tZ        r       | j                  t         j                  | j                  t>        r       | j                  t         j                  | j                  tB        r       | j                  t         j                  | j                  tr        r       | j                  t         j                  | j                  tt        r       | j                  t         j                  | j                  tv        r       | j                  t         j                  | j                  tx        r       | j                  t         j                  | j                  tz        r       | j                  t         j                  | j                  tj        r       | j                  t         j                  | j                  tn        r       | j                  t         j                  | j                  tb        r       | j                  t         j                  | j                  td        r       | j                  t         j                  | j                  tf        r       | j                  t         j                  | j                  tl        r       | j                  t         j                  | j                  t6        r       | j                  t         j                  | j                  t8        r       | j                  t         j                  | j                  t:        r       | j                  t         j                  | j                  tH        r       | j                  t         j                  | j                  tJ        r       | j                  t         j                  | j                         | j                  t         j                  | j                         | j                  t         j                  | j                         | j                  t         j                  | j                         y )sNz&New 	Ctrl+NzNew filez&Open... 	Ctrl+Oz	Open filez&Revert 	Ctrl+RzRevert to last saved versionz&Close 	Ctrl+Wz
Close filez&Save... 	Ctrl+Sz	Save filezSave &As 	Ctrl+Shift+SzSave file with new name)PySlicesSymPySliceszSave A Cop&yz9Save a copy of the file without changing the current filez&Print... 	Ctrl+Pz
Print filez&Update Namespace 	Ctrl+Shift+Nz0Update namespace for autocompletion and calltipszE&xit	Ctrl+QzExit Programz&Undo 	Ctrl+ZzUndo the last actionz&Redo 	Ctrl+YzRedo the last undone actionzCu&t 	Ctrl+XzCut the selectionz&Copy 	Ctrl+CzCopy the selectionzCop&y Plus 	Ctrl+Shift+Cz&Copy the selection - retaining promptsz&Paste 	Ctrl+VzPaste from clipboardzPast&e Plus 	Ctrl+Shift+VzPaste and run commandszCle&arzDelete the selectionzSelect A&ll 	Ctrl+AzSelect all textzE&mpty Buffer...z*Delete all the contents of the edit bufferz&Find Text... 	Ctrl+Fz"Search for text in the edit bufferzFind &Next 	Ctrl+Gz%Find next instance of the search textzFind Pre&vious 	Ctrl+Shift+Gz)Find previous instance of the search textz&Wrap Lines	Ctrl+Shift+WzWrap lines at right edgez&Show Line Numbers	Ctrl+Shift+LzShow Line Numbersz&Toggle Maximize	F11zMaximize/Restore ApplicationToggleToolszShow &Tools	F4z Show the filling and other toolsr2   r3   z&Hide Folding MarginzHide Folding Marginz"Show &Auto Completion	Ctrl+Shift+AzShow auto completion listz&Include &Magic Attributes	Ctrl+Shift+Mz9Include attributes visible to __getattr__ and __setattr__z(Include Single &Underscores	Ctrl+Shift+Uz2Include attributes prefixed by a single underscorez(Include &Double Underscores	Ctrl+Shift+Dz2Include attributes prefixed by a double underscorezShow Call &Tips	Ctrl+Shift+Tz4Show call tips with argument signature and docstringz&Insert Call Tips	Ctrl+Shift+Iz&Insert Call Tipsz&Auto CompletionzAuto Completion Optionsz
&Call TipszCall Tip Optionsz&Autosave Historyz#Automatically save history on closez&Save History NowzSave historyz&Clear History zClear historyz&HistoryzHistory OptionszE&xecute Startup ScriptzExecute Startup Scriptz&Edit Startup Script...Edit Startup Scriptz&Show PySlices TutorialzShow PySlices Tutorialz&StartupzStartup Optionsz&Enable Shell ModezEnable Shell Modez8&Enable "Auto-Sympy" Conversions for Undefined VariableszEnable "Auto-Sympy" Conversionsz&Auto Save Settingsz$Automatically save settings on closez&Save SettingszSave settings nowz&Revert to defaultzRevert to the default settingsz	&SettingszSettings Optionsz&Help	F1zHelp!z	&About...zAbout this programz&Filez&Editz&Viewz&Optionsz&Help)r$   )}r   MenufileMenuAppendID_NEWID_OPENAppendSeparator	ID_REVERTID_CLOSEID_SAVE	ID_SAVEASr   ID_SAVEACOPYID_PRINTID_NAMESPACEID_EXITeditMenuID_UNDOID_REDOID_CUTID_COPYID_COPY_PLUSID_PASTEID_PASTE_PLUSID_CLEARID_SELECTALLID_EMPTYBUFFERID_FINDID_FINDNEXTID_FINDPREVIOUSviewMenuID_WRAP
ITEM_CHECKID_SHOW_LINENUMBERSID_TOGGLE_MAXIMIZEhasattrID_SHOWTOOLSID_HIDEFOLDINGMARGINautocompMenuID_AUTOCOMP_SHOWID_AUTOCOMP_MAGICID_AUTOCOMP_SINGLEID_AUTOCOMP_DOUBLEcalltipsMenuID_CALLTIPS_SHOWID_CALLTIPS_INSERToptionsMenuAppendSubMenuhistoryMenuID_SAVEHISTORYID_SAVEHISTORYNOWID_CLEARHISTORYstartupMenuID_EXECSTARTUPSCRIPTID_EDITSTARTUPSCRIPTID_SHOWPYSLICESTUTORIALsettingsMenuID_ENABLESHELLMODEID_ENABLEAUTOSYMPYID_AUTO_SAVESETTINGSID_SAVESETTINGSID_DELSETTINGSFILEhelpMenuID_HELPID_ABOUTMenuBarmenuBar
SetMenuBarr   EVT_MENU	OnFileNew
OnFileOpenOnFileRevertOnFileClose
OnFileSaveOnFileSaveAsOnFileSaveACopyOnFileUpdateNamespaceOnFilePrintOnExitOnUndoOnRedoOnCutOnCopy
OnCopyPlusOnPasteOnPastePlusOnClearOnSelectAllOnEmptyBufferOnAboutOnHelpOnAutoCompleteShowOnAutoCompleteMagicOnAutoCompleteSingleOnAutoCompleteDoubleOnCallTipsShowOnCallTipsInsertOnWrapOnToggleMaximizeOnShowLineNumbersOnEnableShellModeOnEnableAutoSympyOnAutoSaveSettingsOnSaveHistoryOnSaveHistoryNowOnClearHistoryOnSaveSettingsOnDelSettingsFileOnEditStartupScriptOnExecStartupScriptOnShowPySlicesTutorial
OnFindText
OnFindNextOnFindPreviousOnToggleToolsOnHideFoldingMarginEVT_UPDATE_UIOnUpdateMenuEVT_ACTIVATE
OnActivateEVT_FINDEVT_FIND_NEXTEVT_FIND_CLOSEOnFindClose)r"   mbs      r)   __createMenuszFrame.__createMenus`   sa   GGI%DM			-			./	1	,			-		5*	,>>77HH\>LN		/			AC	E		/>: GGI%DM	*'	)	*.	0		$	&	*%	'	:9	;	,.DE	 <)	+		8'	)	5"	$		!3=	?	25	7	38	:	"A<	> GGI%DM	5+R]]	<	$&H$bmm	5	#%</	14'HH\&7H >>J}55HH) 6 5r}}F
 !#	)D	!#H,bmm	=	"$ML	  	
#%PEr}}	V	#%PEr}}	V "	)D	!#BG	X	#%F$bmm	5  "wwy(D	))+=1	3	))<9KL	7790C6	G 13F	!1B 	"	((*6GH779 4 9 8"--	I 	 4 9 5	7 >>77##$; 9 8"--I 	
((*6GHGGI>>77$$%7 4 3R]]D >>]*$$%7 Z A2==R 	  !5!6!G	X 	  !1!4	6 	  !3!5!A	C 	
));8JKGGI%DM	+w/		;(<=::<'DL	(	(	(	!!:.	(		"++t~~&	9		"++t7	;		"++t00Y	?		"++t//H	=		"++t7	;		"++t00Y	?		"++t33	E		"++t99l	K		"++t//H	=		"++t{{w	7		"++t{{w	7		"++t{{w	7		"++tzzf	5		"++t{{w	7		"++t<	@		"++t||	9		"++t//M	B		"++t||	9		"++t//L	A		"++t11n	E		"++t||	9		"++t{{w	7		"++t66;K	L		"++t77<M	N		"++t88=O	P		"++t88=O	P		"++t227G	H		"++t449K	L		"++t{{w	7		"++t449K	L		"++t55:M	N		"++t55:L	M		"++t55:L	M		"++t66;O	P		"++t11n	E		"++t449J	K		"++t22	G		"++t22	G		"++t55:L	M		"++t77<P	Q		"++t77<P	Q		"++t::?V	W		"++t7	;		"++t;	?		"++t22	G		"++t11l	C		"++t77<P	Q		"""D$5$5&	A		"""D$5$5'	B		"""D$5$5)	D		"""D$5$5(	C		"""D$5$5'	B		"""D$5$5)	D		"""D$5$5,	G		"""D$5$5(	C		"""D$5$5'	B		"""D$5$5'	B		"""D$5$5&	A		"""D$5$5'	B		"""D$5$5,	G		"""D$5$5(	C		"""D$5$5-	H		"""D$5$5(	C		"""D$5$5,	G		"""D$5$5.	I		"""D$5$5:J	K		"""D$5$5:K	L		"""D$5$5:L	M		"""D$5$5:L	M		"""D$5$5:J	K		"""D$5$5:L	M		"""D$5$5'	B		"""D$5$5:M	N		"""D$5$5:L	M		"""D$5$5:L	M		"""D$5$5:N	O		"""D$5$5/	J		"""D$5$5:L	M		"""D$5$5:N	O		"""D$5$5:Q	R		"""D$5$5.	I		"""D$5$5:K	L		"""D$5$5/	J		"""D$5$5:N	O		"""D$5$5'	B		"""D$5$5+	F		"""D$5$5/	J		"""D$5$5,	G		"""D$5$5:N	O		"//4??3		"++t/		"""DOO4		"##T%5%56r*   c                     t         j                  j                         }t        |d      r1|j	                         |_        |j                  |j
                         y y )NlineNumbers)r   Window	FindFocusrW   	IsCheckedr   setDisplayLineNumbersr"   r.   wins      r)   r   zFrame.OnShowLineNumbers^  sC    ii!!#3&#oo/CO%%coo6 'r*   c                 D    | j                  | j                                 y N)MaximizeIsMaximizedr-   s     r)   r   zFrame.OnToggleMaximized  s    $**,,-r*   c                 $    | j                          y r   )	bufferNewr-   s     r)   ry   zFrame.OnFileNewg  s    r*   c                 $    | j                          y r   )
bufferOpenr-   s     r)   rz   zFrame.OnFileOpenj      r*   c                 $    | j                          y r   )bufferRevertr-   s     r)   r{   zFrame.OnFileRevertm      r*   c                 $    | j                          y r   )bufferCloser-   s     r)   r|   zFrame.OnFileClosep      r*   c                 $    | j                          y r   )
bufferSaver-   s     r)   r}   zFrame.OnFileSaves  r   r*   c                 $    | j                          y r   )bufferSaveAsr-   s     r)   r~   zFrame.OnFileSaveAsv  r   r*   c                 $    | j                          y r   )bufferSaveACopyr-   s     r)   r   zFrame.OnFileSaveACopyy      r*   c                 $    | j                          y r   )updateNamespacer-   s     r)   r   zFrame.OnFileUpdateNamespace|  r   r*   c                 $    | j                          y r   )bufferPrintr-   s     r)   r   zFrame.OnFilePrint  r   r*   c                 &    | j                  d       y )NF)Closer-   s     r)   r   zFrame.OnExit  s    

5r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   Undor   s      r)   r   zFrame.OnUndo      ii!!#
r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   Redor   s      r)   r   zFrame.OnRedo  r   r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   Cutr   s      r)   r   zFrame.OnCut  s    ii!!#	r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   Copyr   s      r)   r   zFrame.OnCopy  r   r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   CopyWithPromptsr   s      r)   r   zFrame.OnCopyPlus  s     ii!!#r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   Paster   s      r)   r   zFrame.OnPaste      ii!!#		r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   PasteAndRunr   s      r)   r   zFrame.OnPastePlus  s    ii!!#r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   Clearr   s      r)   r   zFrame.OnClear  r   r*   c                    t         j                  j                         }t        j                  | ddt         j                  t         j
                  z  t         j                  z        }|j                         }|j                          |t         j                  k(  r.|j                          t        |d      r|j                          y y y )NzFAre you sure you want to clear the edit buffer,
deleting all the text?zEmpty Bufferprompt)r   r   r   MessageDialogOKCANCELICON_QUESTION	ShowModalr0   ID_OKClearAllrW   r   )r"   r.   r   danswers        r)   r   zFrame.OnEmptyBuffer  s    ii!!#T6+RUURYY->AQAQ-QS 			bhhLLNs8$

 % r*   c                 `    t         j                  j                         }|j                          y r   )r   r   r   	SelectAllr   s      r)   r   zFrame.OnSelectAll  s    ii!!#r*   c                     d}d}t        j                  | ||t         j                  t         j                  z        }|j	                          |j                          y)zDisplay an About window.AboutzYour message here.Nr   r   r   ICON_INFORMATIONr   r0   r"   r.   r%   textdialogs        r)   r   zFrame.OnAbout  sJ    #!!$e"$%%"*=*="=?r*   c                     d}d}t        j                  | ||t         j                  t         j                  z        }|j	                          |j                          y)Display a Help window.Helpz(Type 'shell.help()' in the shell window.Nr   r   s        r)   r   zFrame.OnHelp  sJ    9!!$e"$%%"*=*="=?r*   c                 j    t         j                  j                         }|j                         |_        y r   )r   r   r   r   autoCompleter   s      r)   r   zFrame.OnAutoCompleteShow  s#    ii!!# ??,r*   c                 j    t         j                  j                         }|j                         |_        y r   )r   r   r   r   autoCompleteIncludeMagicr   s      r)   r   zFrame.OnAutoCompleteMagic  s#    ii!!#','8$r*   c                 j    t         j                  j                         }|j                         |_        y r   )r   r   r   r   autoCompleteIncludeSingler   s      r)   r   zFrame.OnAutoCompleteSingle  #    ii!!#(-(9%r*   c                 j    t         j                  j                         }|j                         |_        y r   )r   r   r   r   autoCompleteIncludeDoubler   s      r)   r   zFrame.OnAutoCompleteDouble  r  r*   c                 j    t         j                  j                         }|j                         |_        y r   )r   r   r   r   autoCallTipr   s      r)   r   zFrame.OnCallTipsShow  s"    ii!!#//+r*   c                 j    t         j                  j                         }|j                         |_        y r   )r   r   r   r   callTipInsertr   s      r)   r   zFrame.OnCallTipsInsert  s#    ii!!#!OO-r*   c                     t         j                  j                         }|j                  |j	                                t        j
                  d| j                  j                         y )Nr   )r   r   r   SetWrapModer   	CallLatershellEnsureCaretVisibler   s      r)   r   zFrame.OnWrap  s?    ii!!#)*
Q

556r*   c                 .    |j                         | _        y r   )r   autoSaveHistoryr-   s     r)   r   zFrame.OnSaveHistory      $0r*   c                 $    | j                          y r   )SaveHistoryr-   s     r)   r   zFrame.OnSaveHistoryNow  r   r*   c                 8    | j                   j                          y r   )r  clearHistoryr-   s     r)   r   zFrame.OnClearHistory  s    

!r*   c                 .    |j                         | _        y r   )r   enableShellModer-   s     r)   r   zFrame.OnEnableShellMode  r  r*   c                 .    |j                         | _        y r   )r   enableAutoSympyr-   s     r)   r   zFrame.OnEnableAutoSympy  r  r*   c                 .    |j                         | _        y r   )r   hideFoldingMarginr-   s     r)   r   zFrame.OnHideFoldingMargin  s    !&!2r*   c                 .    |j                         | _        y r   )r   autoSaveSettingsr-   s     r)   r   zFrame.OnAutoSaveSettings  s     % 1r*   c                 $    | j                          y r   )DoSaveSettingsr-   s     r)   r   zFrame.OnSaveSettings  s    r*   c                 j   | j                   t        j                  | ddt        j                  t        j                  z  t        j
                  z        }|j                         }|j                          |t        j                  k(  r+| j                   j                          | j                          y y y )Nz`Do you want to revert to the default settings?
A restart is needed for the change to take effectWarning)configr   r   r   r   r   r   r0   r   	DeleteAllLoadSettings)r"   r.   r   r   s       r)   r   zFrame.OnDelSettingsFile  s    ;;"   D255299,r/?/??AA [[]FIIK"(("%%'!!# # #r*   c                 >    t        | d      r| j                          y y )NEditStartupScript)rW   r)  r-   s     r)   r   zFrame.OnEditStartupScript
  s    4,-""$ .r*   c                 R    |j                         | _        | j                  d       y NT)force)r   execStartupScriptSaveSettingsr-   s     r)   r   zFrame.OnExecStartupScript  s"    !&!2%r*   c                 R    |j                         | _        | j                  d       y r+  )r   showPySlicesTutorialr.  r-   s     r)   r   zFrame.OnShowPySlicesTutorial  s"    $)OO$5!%r*   c                    | j                   y t        j                  j                         }| j                  dk(  r6t        j
                  || j                  dt        j                        | _         nFt        j
                  || j                  dt        j                  t        j                  z        | _         | j                   j                          y )Nr   FindzFind & Replace)
r   r   r   r   r   FindReplaceDialogr   FR_NOWHOLEWORDFR_REPLACEDIALOGShowr   s      r)   r   zFrame.OnFindText  s    <<#ii!!#>>Y&//T]]/5b6G6GIDL //T]] ""3"3B4G4G"GIDLr*   c                 P   |rp| j                   j                         t        j                  z  rE| j                   j	                  | j                   j                         t        j                  z         nq|so| j                   j                         t        j                  z  sD| j                   j	                  | j                   j                         t        j                  z         | j                   j                         s| j                  |       y t        |t        j                        r| j                  j                         }nt        j                  j                         }|j                  | j                   | j                         | j                  | j                  d        y y r   )r   GetFlagsr   r   r   GetFindStringr   
isinstanceFindDialogEventr   	GetParentr   r   
DoFindNextr   )r"   r.   backwardr   s       r)   r   zFrame.OnFindNext"  s   //1BJJ>MM""DMM$:$:$<rzz$IK4==#9#9#;bjj#HMM""DMM$:$:$<rzz$IK}}**,OOE"eR//0,,((*C))%%'Ct}}dll3<<#T" $r*   c                 *    | j                  |d       y )NT)r>  )r   r-   s     r)   r   zFrame.OnFindPrevious3  s    t,r*   c                 F    | j                   j                          d | _         y r   )r   r0   r-   s     r)   r   zFrame.OnFindClose6  s    r*   c                 $    | j                          y r   )r4   r-   s     r)   r   zFrame.OnToggleTools:  r   r*   c                    t         j                  j                         }|j                         }|j	                  d       	 |t
        k(  r|j	                  t        | d             y|t        k(  r|j	                  t        | d             y|t        k(  r.|j	                  t        | d      xr | j                                y|t        k(  r.|j	                  t        | d      xr | j                                y|t        k(  r.|j	                  t        | d      xr | j                                y|t        k(  r.|j	                  t        | d      xr | j                                y|t        k(  r.|j	                  t        | d      xr | j                                y|t        k(  r.|j	                  t        | d	      xr | j                                y|t         k(  r.|j	                  t        | d
      xr | j                                y|t"        k(  r |j	                  |j%                                y|t&        k(  r |j	                  |j)                                y|t*        k(  r |j	                  |j-                                y|t.        k(  r |j	                  |j1                                y|t2        k(  r.|j	                  |j1                         xr t        |d             y|t4        k(  r |j	                  |j7                                y|t8        k(  r.|j	                  |j7                         xr t        |d             y|t:        k(  r |j	                  |j-                                y|t<        k(  r|j	                  t        |d             y|t>        k(  r/|j	                  t        |d      xr |jA                                 y|tB        k(  r|jE                  |jF                         y|tH        k(  r|jE                  |jJ                         y|tL        k(  r|jE                  |jN                         y|tP        k(  r|jE                  |jR                         y|tT        k(  r|jE                  |jV                         y|tX        k(  r|jE                  |jZ                         y|t\        k(  r |jE                  |j_                                y|t`        k(  r|jE                  |jb                         y|td        k(  r9|jE                  | jf                         |j	                  | jh                  du       y|tj        k(  r9|jE                  | jl                         |j	                  | jh                  du       y|tn        k(  r9|jE                  | jp                         |j	                  | jh                  du       y|tr        k(  r,|j	                  | jh                  duxr t        | d             y|tt        k(  r|j	                  | jh                  du       y|tv        k(  r9|jE                  | jx                         |j	                  | jh                  du       y|tz        k(  r9|jE                  | j|                         |j	                  | jh                  du       y|t~        k(  r9|jE                  | j                         |j	                  | j                  du       y|t        k(  r,|j	                  | j                  duxr t        | d             y|t        k(  r|j	                  | j                  du       y|t        k(  r9|j	                  t        | d             |j	                  | j                  du       y|t        k(  r|j	                  t        |d             y|t        k(  r|j	                  t        |d             y|t        k(  r|j	                  t        |d             y|t        k(  r |jE                  | j                                y|t        k(  r9|jE                  | j                         |j	                  | jh                  du       y|j	                  d       y# t        $ r |j	                  d       Y yw xY w)z6Update menu items based on current status and context.Tr   r   r   r   r   r   r   r   r   r   r   r   r   Nr"  r  r)  r=  F)Mr   r   r   GetIdEnabler9   rW   r:   r<   	hasBufferr=   r>   bufferHasChangedr?   r@   rB   rA   rE   CanUndorF   CanRedorG   CanCutrH   CanCopyrI   rJ   CanPasterK   rL   rM   rN   GetReadOnlyr[   Checkr  r\   r  r]   r  r^   r  r`   r
  ra   r  rS   GetWrapModerU   r   rm   r  r%  rn   r  ro   r   rp   rq   ri   r-  rk   r0  re   r  dataDirrf   rg   rj   rO   rP   rQ   rX   
ToolsShownrY   r  AttributeError)r"   r.   r   r$   s       r)   r   zFrame.OnUpdateMenu>  sA   ii!!#[[]Tu	 V|WT;78wWT<89yWT>: 2!%!13xWT=9 2!%!13wWT<8 9!%!6!6!8:yWT>: 2!%!13|#WT+<= 2!%!13|#WT+<= 2!%!13xWT=9 2!%!13wS[[]+wS[[]+vSZZ\*wS[[]+|#S[[]Nws<M/NOxS\\^,}$S\\^K]0KLxSZZ\*|#WS+67~%WS*5Ocoo>O:OP''C,,-((C889))C99:))C99:''COO,))C--.wCOO-.**COO,))D001T[[45))D001T[[45++D112T[[45&T[[4 =$T+;<>))T[[45++D223T[[45..D556T[[45~%D001T\\56((T\\5 :$T=9;&T\\56++WT+>?@T\\56wWS,78{"WS,78&WS,78|#DOO-.++D223T[[45 U# 	 LL	 s  $a+ &$a+ 6a+ 6a+ 96a+ 06a+ '6a+ 6a+ 6a+ (a+ 5(a+ (a+ (a+ 06a+ '(a+ 6a+ (a+ 0$a+ 7a+ $a+ 2$a+ $a+ <$a+ !$a+ $a+ +(a+ $a+ 9Aa+ ;Aa+ =Aa+ ?4a+ 4&a+ Aa+ Aa+ Aa+ !4a+ &a+ =Aa+ ?$a+ $$a+ 	$a+ .(a+ Aa+ a+ +bbc                     |j                         sJt        j                  j                         }t	        |d      r |j                         r|j                          |j                          y)zw
        Event Handler for losing the focus of the Frame. Should close
        Autocomplete listbox, if shown.
        AutoCompActiveN)	GetActiver   r   r   rW   rS  AutoCompCancelSkipr   s      r)   r   zFrame.OnActivate  sM    
   ))%%'Cs,-#2D2D2F""$

r*   c                     t        j                  |j                  dd      |j                  dd            }t        j                  |j                  dd      |j                  dd            }| j	                  |       | j                  |       y)z@Called by derived classes to load settings specific to the FrameWindow/PosXr	   Window/PosYWindow/WidthWindow/HeightN)r   PointReadIntSizeSetSizeMove)r"   r%  r&   r'   s       r)   r'  zFrame.LoadSettings  so    xx}b9}b9; wwv~~nb9~~or:< 	T		#r*   c                    | j                   s| j                         so| j                         \  }}|j                  d|       |j                  d|       | j	                         \  }}|j                  d|       |j                  d|       yyy)zFCalled by derived classes to save Frame settings to a wx.Config objectrZ  r[  rX  rY  N)r   r   GetSizeWriteIntGetPosition)r"   r%  whpxpys         r)   r.  zFrame.SaveSettings  sv    
 }}T%5%5%7<<>DAqOONA.OOOQ/%%'FBOOM2.OOM2. &8}r*   F)@__name__
__module____qualname____doc__r   DefaultPositionDefaultSizeDEFAULT_FRAME_STYLEr   r!   r   r   r   r   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r'  r.   r*   r)   r   r   =   sD   ) #r''bnn--	2*+

z7|7.-9::,.7
1"1132
$%&&
#"-z z 	/r*   r   c                   H    e Zd ZdZd Zd Zd ZddZd Zd Z	d Z
d	 Zd
 Zy)ShellFrameMixinz
    A mix-in class for frames that will have a Shell or a Crust window
    and that want to add history, startupScript and other common
    functionality.
    c                    || _         || _        t        j                  j	                  d      | _        | j
                  s;| j                  r/t        j                  j                  | j                  d      | _        d| _        d| _	        d| _
        d| _        d| _        d| _        d| _        | j                   r| j                   j                  dd      | _
        | j                   j                  dd      | _        | j                   j                  dd      | _        | j                   j                  dd      | _        | j                   j                  d	d      | _        y y )
NPYTHONSTARTUPstartupFTOptions/ExecStartupScriptOptions/ShowPySlicesTutorialOptions/EnableShellModeOptions/EnableAutoSympyOptions/HideFoldingMargin)r%  rO  osenvirongetstartupScriptpathjoinr   r  r-  r0  r  r  r  ReadBool)r"   r%  rO  s      r)   r   zShellFrameMixin.__init__  s.   ZZ^^O<!!dll!#dllI!FD %$ "&$(!$#!&;;%%&A4H " %%&DdK % %%&?G   %%&?F   %%&A4H " r*   c                    ddl }d}|j                  j                  j                  }|j                  j
                  j                  | ||d      } |j                  d|j                  |j                  |j                        }|j                         d   j                  |       |j                         d   j                  d       |j                          |j                          y)r   r   NzHelp on key bindings)i  i  )r'   
   )wx.lib.dialogsrh  r  	HELP_TEXTlibdialogsScrolledMessageDialogFontFONTFAMILY_TELETYPEFONTSTYLE_NORMALFONTWEIGHT_NORMALGetChildrenSetFontSetInsertionPointr   r0   )r"   r.   r   r%   r   dlgfnts          r)   r   zShellFrameMixin.OnHelp
  s    &uu{{$$ffnn224u;E 3 Hbggb"00"2E2ErG[G[\!$$S)!..q1r*   c                    | j                   | j                   j                  dd      | _        | j                   j                  dd      | _        | j                   j                  dd      | _        | j                   j                  dd      | _        | j                   j                  dd      | _        | j                   j                  dd      | _        | j                   j                  d	d      | _        | j                          y y )
NOptions/AutoSaveSettingsFrw  TOptions/AutoSaveHistoryrx  ry  rz  r{  )
r%  r  r   r-  r  r0  r  r  r  LoadHistoryr"   s    r)   r'  zShellFrameMixin.LoadSettings  s    ;;"%%&@%H ! %%&A4H " %%&?G   %%&DdK % %%&?G   %%&?F   %%&A4H " # #r*   c                    | j                   6| j                   j                  d| j                         | j                  s|r| j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j
                         | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j                         | j                  r| j                          y y y )Nr  r  rw  rx  ry  rz  r{  )
r%  	WriteBoolr   r  r-  r0  r  r  r  r  )r"   r,  s     r)   r.  zShellFrameMixin.SaveSettings/  s   ;;"KK!!"<"&"7"79 $$%%&?&*&:&:<%%&A&*&<&<>%%&D&*&?&?A%%&?&*&:&:<%%&?&*&:&:<%%&A&*&<&<>##  " $% #r*   c                 $   | j                   r	 d}dj                  | j                  j                  D cg c]  }|j	                  |       c}      }t
        j                  j                  | j                   d      }t        |d      5 }|j                  |       d d d        y y c c}w # 1 sw Y   y xY w#  t        j                  | ddt        j                  t        j                  z        }|j                          |j                           xY w)Nutf-8    
historywbzError saving history file.Error)rO  r  r  r  encoder|  r  openwriter   r   ICON_EXCLAMATIONr   r   r0   )r"   encrf  histnamefr   s          r)   r  zShellFrameMixin.SaveHistoryG  s    << ~~04

0B0B'D+, ()xx} 'D Eww||DLL)<$% "GGDM" " 'D" "$$T+G%,b.A.A"%%.GI		s;   %B5 B$=B5 B)B5 $B5 )B2.B5 2B5 5ADc                    | j                   rt        j                  j                  | j                   d      }t        j                  j	                  |      r	 t        |d      5 }|j                         }d d d        d}j                  d      D cg c]  }|j                  |       }}|| j                  _
        t        j                  d| j                  j                         y y y # 1 sw Y   wxY wc c}w #  dd l}|j                          t        j                   | dd	t        j"                  t        j$                  z        }|j'                          |j)                          Y y xY w)
Nr  rbr  r  zShell.loadHistory)signalr  r   zError loading history file.r  )rO  r|  r  r  existsr  readsplitdecoder  r  r   send	traceback	print_excr   r   r  r   r   r0   )r"   r  r  r  r  rf  r  r   s           r)   r  zShellFrameMixin.LoadHistoryW  s   <<77<<i8Dww~~d# dD) (Q vvx( "C37::i3HIaAHHSMIDI)-DJJ&OO+>,0JJ,>,>@ $ ( ( J $'')((/L)0"2E2Ebee2KMAKKMIIKs1   C; #C*4C; C6)>C; *C3/C; ;A-E*c                      y)NTrq  r  s    r)   rF  z ShellFrameMixin.bufferHasChangedn  s    r*   c           	      N   dd l }t        j                         j                         }|dz   |j	                  d      z   }t        j
                  dd|ddt        j                  t        j                  z        }|sy | j                  j                         }	 t        |d	      5 }|j                  |       d d d        y # 1 sw Y   y xY w#  t        j                  | d
dt        j                  t        j                  z        }|j                          |j!                          Y y xY w)Nr   -z%Y%m%d-%H%M.pyzSave File AsSavingrh  z*.py)default_filenamedefault_extensionwildcardflagsre  zError saving sessionr  )timer   GetApp
GetAppNamestrftimeFileSelectorSAVEOVERWRITE_PROMPTr  GetTextr  r  r   r   
ICON_ERRORr   r0   )r"   r  appnamedefaultfileNamer   r  r   s           r)   r   zShellFrameMixin.bufferSaver  s    ))+((*C-$--0@"AA??>83:48+1*,''B4G4G*G	I
 zz!!#	h$   	  '>x!#!68AKKMIIKs+   C	 "B=4C	 =CC	 C	 	AD$c                    t         j                  j                  | j                        r=dd l}|j                  | j                  dd d      5 }|j                         }d d d        nd}t        | | j                        }|j                         t        j                  k(  rQ|j                         }	 t        | j                  d      5 }|j                  |j                  d             d d d        y y # 1 sw Y   xY w# 1 sw Y   y xY w#  t        j                  | ddt        j                  t        j                   z        }|j                          |j#                          Y y xY w)	Nr   rr  )newlineencodingr   r  zError saving startup file.r  )r|  r  r  r  ior  r  EditStartupScriptDialogr   r   r   r  r  r  r   r  r   r0   )r"   r  fidr   r  r  r   s          r)   r)  z!ShellFrameMixin.EditStartupScript  s$   77>>$,,- ++S$Q "UXxxz" " D%dD,>,>E==?bhh&;;=D$,,d3 2qGGDKK012 2 '" "2 2$$T+G%,b.A.A"%%.GI		s7   C32D !C?)D 3C<?DD D AE&Nri  )rj  rk  rl  rm  r   r   r'  r.  r  r  rF  r   r)  rq  r*   r)   rs  rs    s6    
I8 *#0  .Dr*   rs  c                       e Zd Zd Zd Zy)r  c                    t         j                  j                  | |ddt         j                  t         j                  z         t        j
                  | dd      }t        j                  | d|t         j                        }t        j                  |       | _
        | j                  j                  |       t        j                  | j                  j                         t        j                  | t         j                        }t        j                  | t         j                         }t        j"                  t         j$                        }t        j"                  t         j&                        }	|	j)                  |t         j*                         |	j)                  d       |	j)                  |d	       |j)                  |	d
t         j,                  t         j.                  z  d       |j)                  | j                  d	t         j,                  t         j0                  z  t         j2                  z  d       t        j"                  t         j&                        }
|
j)                  dd	       |
j)                  |       |
j)                  dd	       |
j)                  |       |
j)                  dd	       |j)                  |
d
t         j,                  t         j.                  z  d       | j5                  |       | j7                          y )N)i  i^  r5   )r'   r%   r(   r	   zPath:)r(   )flag)   r  r   r   r  )r   Dialogr   DEFAULT_DIALOG_STYLERESIZE_BORDER
StaticTextTextCtrlTE_READONLYr   
EditWindoweditorSetText	CallAfterSetFocusButtonr   	ID_CANCELBoxSizerVERTICAL
HORIZONTALAddALIGN_CENTER_VERTICALEXPANDALLLEFTRIGHTSetSizerLayout)r"   r#   r  r   pstptxokcancel	mainSizerpthSizerbtnSizers              r)   r   z EditStartupScriptDialog.__init__  s   
		4i!6!#!8!89I9I!I 	 	K mmD"g.kk$HBNNC ++D1D!
T[[))*YYtRXX&4.KK,	;;r}}-Sr778US!h299RVV#3R8dkk1bii&7&@"E;;r}}-UARUAVUAh299RVV#3R8i r*   c                 6    | j                   j                         S r   )r  r  r  s    r)   r  zEditStartupScriptDialog.GetText  s    {{""$$r*   N)rj  rk  rl  r   r  rq  r*   r)   r  r    s    !H%r*   r  )=rm  
__author__r   r|  versionr   r   r   r   r9   r:   r<   r=   r>   r?   rA   rC   rE   rF   rG   rH   rJ   rL   rM   NewIdRefrN   rt   rs   r[   r\   r]   r^   r`   ra   rI   rB   rK   rS   rV   rU   rm   rn   ro   r@   re   rf   rg   rp   rq   rj   ri   rk   rO   rP   rQ   rX   rY   r   rs  r  r  rq  r*   r)   <module>r     s|   7
 	 	   	
**LL	;;
**LL	;;
**
**
**	
**;;;;;;
"++-2;;= BKKM  R[[]  R[[] 2;;=  R[[] r{{}r{{}
"++- R[[] !bkkm  R[[]  R[[] "r{{} r{{}BKKM "++-"++- R[[] "r{{} "r{{} %"++- 
**bkkm"++-r{{}"r{{} f
/BHH f
/V@ @H&%bii &%r*   