
    d9                        d Z dZddlZddlZddlZddlZddlZddlmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZ  G d dej"                        Z G d de	j&                        Z G d dej*                        Z G d dej*                        Z G d dej*                        Z G d dej2                  ej4                        Zy)z6Crust combines the shell and filling into one control.z(Patrick K. O'Brien <pobrien@orbtech.com>    N   )
dispatcher)
editwindow)Filling)frame)Shell)VERSIONc                       e Zd ZdZd ZdZdej                  ej                  ej                  ej                  z  dddddddddfdZd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)CrustzCrust based on SplitterWindow.i,  zCrust WindowNT c           
         t         j                  j                  | ||||||       | j                         }| j	                  |t         j
                   z         t        || |
||||d|| _        | j                  | _        | | j                  j                  j                  }t        j                  | d      | _        | j                  | j                  j                  j                  d<   t        | j                  |||	      | _        | j                  | j                  j                  j                  d<   | j                  j                  | j                  dd	
       t!        | j                        | _        | j                  j                  | j"                  d       | j"                  j$                  | j                  j                  j                  d<   | j                  j'                         dz
  | j"                  _        t+        | j                        | _        | j                  j                  | j,                  d       t/        | j                        | _        | j                  j                  | j0                  d       t3        | j                        | _        | j                  j                  | j4                  d       | j                  j7                          | j                  j7                          | j9                  | j                         d	| _        t        j<                  | j>                         | jA                  d       | jC                  t         jD                  | jF                         | jC                  t         jH                  | jJ                         | jC                  t         jL                  | jN                         y)zCreate Crust instance.)parent	introTextlocalsInterpClassstartupScriptexecStartupScriptNr   )r   idnotebook)r   
rootObject	rootLabelrootIsNamespacefilling	NamespaceT)pagetextselect)r   Display)r   r   ppr   CalltipHistory
Dispatcherd   )(wxSplitterWindow__init__GetWindowStyleSetWindowStyleTAB_TRAVERSALr   shelleditorinterpr   Notebookr   r   r   AddPager   displaysetItemGetPageCountnbTabr!   calltipSessionListingsessionlistingDispatcherListingdispatcherlistingHide
Initialize_shouldsplit	CallAfter_CheckShouldSplitSetMinimumPaneSizeBindEVT_SIZESplitterOnSizeEVT_SPLITTER_SASH_POS_CHANGED	OnChangedEVT_SPLITTER_DCLICKOnSashDClick)selfr   r   possizestylenamer   r   r   intror   r   r   r   argskwdss                    -/usr/lib/python3/dist-packages/wx/py/crust.pyr'   zCrust.__init__   s    	""4S$tL ##%ER%5%5$556 !	 #'%"(k)6->* %)	*
 jj**11J4B7/3}}

  ,dmm*4)2/>@
 /3ll

  +4<<k$Odmm44<<i@)-)=)=

  &!]]779!;dmm44<<i@,DMMB4#6#6YG!2$--!H4#9#9M
 	



# 
T++,$		"++t223		"22DNNC		"(($*;*;<    c                     | j                   rH| j                  | j                  | j                  | j                          | j                         | _        nd| _        | j                         | _        y Nr   )	r;   SplitHorizontallyr+   r   
sashoffsetGetSashPositionlastsashposIsSplitissplitrF   s    rN   r=   zCrust._CheckShouldSplit[   sR    ""4::t}}t>NO#335D!D||~rO   c                     | j                   r| j                          nG| j                  | j                  | j                  | j
                          | j                         | _        | j                         | _         y)1Toggle the display of the filling and other toolsN)	rW   UnsplitrR   r+   r   rS   rT   rU   rV   rX   s    rN   ToggleToolszCrust.ToggleToolsc   sQ    <<LLN""4::t}}t>NO#335D||~rO   c                     | j                   S N)rW   rX   s    rN   
ToolsShownzCrust.ToolsShownl   s    ||rO   c                     | j                         j                  |j                         z
  | _        |j                         | _        |j                          y)z0update sash offset from the bottom of the windowN)GetSizeheightrT   rS   rU   SkiprF   events     rN   rC   zCrust.OnChangedo   s=    ,,.//%2G2G2II 002

rO   c                 2    | j                          d| _        y )NF)r[   rW   rd   s     rN   rE   zCrust.OnSashDClicku   s    rO   c                     |j                         }|j                         }|j                  |j                  | j                  z
  d       |j                          y )NT)GetEventObjectra   SetSashPositionrb   rS   rc   )rF   re   splitterszs       rN   rA   zCrust.SplitterOnSizez   sD    '')  T__!<dC

rO   c                      j                   j                  |        j                  j                  |       |j                  dd      }t	        j
                   j                  |        fd}t	        j
                  |       |j                  dd      }|dk7  r j                  j                  |       |j                  dd       _	         j                  sd _
        y y )	NSash/CrustPosi  c                  j    j                         } | j                  j                         z
  _        y r^   )ra   rb   rT   rS   )rk   rF   s    rN   _updateSashPosValuez/Crust.LoadSettings.<locals>._updateSashPosValue   s'    B ii$*>*>*@@DOrO   View/Zoom/DisplayiSash/IsSplitTF)r+   LoadSettingsr   ReadIntr%   r<   ri   r0   SetZoomrW   r;   )rF   configrG   ro   zooms   `    rN   rr   zCrust.LoadSettings   s    

'!!&)nn_c2
T))3/	A 	()~~1373;LL  &~~nd;|| %D rO   c                 R   | j                   j                  |       | j                  j                  |       | j                  dk7  r|j	                  d| j                         |j	                  d| j
                         |j	                  d| j                  j                                y )Nr   rm   rq   rp   )r+   SaveSettingsr   rU   WriteIntrW   r0   GetZoom)rF   ru   s     rN   rx   zCrust.SaveSettings   sv    

'!!&)r!OOOT-=-=>5+T\\-A-A-CDrO   )__name__
__module____qualname____doc__rJ   rS   r%   DefaultPositionDefaultSizeSP_3DSP_LIVE_UPDATEr'   r=   r\   r_   rC   rE   rA   rr   rx    rO   rN   r   r      sw    (DJ"$"*<*<nnBHHR5F5F,F$!%R!#t?=B&&
&"ErO   r   c                       e Zd ZdZdej
                  ej                  ej                  ej                  z  dfdZ	d Z
d Zd Zy)	r   z1STC used to display an object using Pretty Print.r   Fc                     t         j                  j                  | |||||       | j                  d       | j	                  d       |s"t        j                  | j                  d       yy)zCreate Display instance.TFInterpreter.pushreceiversignalN)r   
EditWindowr'   SetReadOnlySetWrapModer   connectpush)rF   r   r   rG   rH   rI   statics          rN   r'   zDisplay.__init__   s[    
 	&&tVRdEJ		:LM rO   c                 l    | s"t        j                  | j                  d       y| j                          y)z%Receiver for Interpreter.push signal.r   r   N)r   
disconnectr   Refresh)rF   commandmores      rN   r   zDisplay.push   s&    !!499=OPrO   c                     t        | d      sy | j                  d       t        j                  | j                        }| j                  |       | j                  d       y )NitemFT)hasattrr   pprintpformatr   SetText)rF   r   s     rN   r   zDisplay.Refresh   sI    tV$~~dii(TrO   c                 V   || _         | j                          | j                         j                         | j                  k7  rgt
        j                  j                         }| j                         j                  | j                         t        j                  |j                         yy)z5Set item to pretty print in the notebook Display tab.N)r   r   	GetParentGetSelectionr3   r%   Window	FindFocusSetSelectionr<   SetFocus)rF   r   focuss      rN   r1   zDisplay.setItem   sn    	>>((*djj8II'')ENN))$**5LL( 9rO   N)r{   r|   r}   r~   r%   r   r   CLIP_CHILDRENSUNKEN_BORDERr'   r   r   r1   r   rO   rN   r   r      sC    ;"$"*<*<nn''"*:*::
N)rO   r   c                       e Zd ZdZddZd Zy)r!   z6Text control containing the most recent shell calltip.Nc                 F   t         j                  t         j                  z  t         j                  z  }t         j                  j                  | |||       | j                  t        j                  ddd             || _        t        j                  | j                  | j                  dz          | j                         }t        j                  |j                         t         j                  t         j                   t         j"                        }| j%                  |       y )NrI         .calltipr   )r%   TE_MULTILINETE_READONLYTE_RICH2TextCtrlr'   SetBackgroundColourColourShellClassNamer   r   r0   GetFontFontGetPointSizeFONTFAMILY_TELETYPEFONTSTYLE_NORMALFONTWEIGHT_NORMALSetFontrF   r   r   r   rI   dffonts          rN   r'   zCalltip.__init__   s    2>>1BKK?
T62U;  3S!9:*DLL9L9LZ9WX\\^wwr("*@*@"BUBUWYWkWklTrO   c                     | s/t        j                  | j                  | j                  dz          y| j	                          | j                  |       | j                  d       y)z!Receiver for this.calltip signal.r   r   Nr   )r   r   r0   r   Clear
AppendTextSetInsertionPoint)rF   r4   s     rN   r0   zCalltip.display   sM    !!4<<@S@ST^@^_ 	

 q!rO   Nr   r   )r{   r|   r}   r~   r'   r0   r   rO   rN   r!   r!      s    @		"rO   r!   c                   0    e Zd ZdZddZd Zd Zd Zd Zy)	r5   z1Text control containing all commands for session.Nc                    t         j                  t         j                  z  t         j                  z  t         j                  z  }t         j
                  j                  | |||       || _        t        j                  | j                  | j                  dz          t        j                  | j                  | j                  dz          t        j                  | j                  | j                  dz          | j                         }t        j                  |j                         t         j                   t         j"                  t         j$                        }| j'                  |       y )Nr   .addHistoryr   .clearHistory.loadHistory)r%   r   r   r   TE_DONTWRAPr   r'   r   r   r   
addHistoryclearHistoryloadHistoryr   r   r   r   r   r   r   r   s          rN   r'   zSessionListing.__init__   s   2>>1!~~.
T62U;,DOO"&"5"5m"C	ED$5$5"&"5"5o"E	GD$4$4"&"5"5n"D	F \\^wwr("*@*@"BUBUWYWkWklTrO   c                    t        j                  | j                  | j                  dz          t        j                  | j                  | j                  dz          t        j                  | j
                  | j                  dz          y )Nr   r   r   r   )r   r   r   r   r   r   rX   s    rN   _disconnectzSessionListing._disconnect   so    t"&"5"5m"C	Et'8'8"&"5"5o"E	Gt'7'7"&"5"5n"D	FrO   c                     | s| j                          y |d d  }|j                          | j                  dj                  |      dz          | j	                          y N
)r   reverseSetValuejoinSetInsertionPointEnd)rF   historyhists      rN   r   zSessionListing.loadHistory   sK    qzdiio,-!!#rO   c                 x    | s| j                          y |r%| j                          | j                  |dz          y y r   )r   r   r   )rF   r   s     rN   r   zSessionListing.addHistory  s8    %%'OOGdN+ rO   c                 L    | s| j                          y | j                  d       y )Nr   )r   r   rX   s    rN   r   zSessionListing.clearHistory  s     brO   r   )	r{   r|   r}   r~   r'   r   r   r   r   r   rO   rN   r5   r5      s    ;"F$,rO   r5   c                       e Zd ZdZddZd Zy)r7   z3Text control containing all dispatches for session.Nc                    t         j                  t         j                  z  t         j                  z  t         j                  z  }t         j
                  j                  | |||       t        j                  | j                         | j                         }t        j                  |j                         t         j                  t         j                  t         j                        }| j!                  |       y )Nr   r   )r%   r   r   r   r   r   r'   r   r   spyr   r   r   r   r   r   r   )rF   r   r   rI   r   r   s         rN   r'   zDispatcherListing.__init__  s    2>>1!~~.
T62U;DHH-\\^wwr("*@*@"BUBUWYWkWklTrO   c                     | s!t        j                  | j                         y|d|}| j                          | j	                         \  }}||k7  r| j                  dd       | j                  |dz          y)z(Receiver for Any signal from Any sender.r   Nz from r   r   )r   r   r   r   r   r   r   )rF   r   senderr   startends         rN   r   zDispatcherListing.spy"  si    !!4884%v.!!#&&(
sC<a#t$rO   rQ   )r{   r|   r}   r~   r'   r   r   rO   rN   r7   r7     s    =
%rO   r7   c                       e Zd ZdZd Zdddej                  ej                  ej                  dddddddfdZ	d Z
d Zd	 Zd
 Zd Zd ZddZd Zy)
CrustFramez,Frame containing all the PyCrust components.Nr   PyCrustTc                    t         j                  j                  | ||||||d       t         j                  j                  | ||       |t        j
                  k(  r| j                  d       dt        z  }| j                  |j                  dd             t        || ||||	|
|| j                  | j                  d	|| _        | j                  j                  | _        | j                  | j                  j                  j                   _        | j                  | j                  _        | j                  j%                          | j'                          y)	zCreate CrustFrame instance.r   )	shellName)i   iX  z&PyCrust %s - The Flakiest Python Shellr   , )	r   rK   r   r   r   r   r   r   r   N)r   Framer'   ShellFrameMixinr%   r   SetSizer	   SetStatusTextreplacer   r   r   crustr+   r   treesetStatusTextr   rr   )rF   r   r   titlerG   rH   rI   r   r   r   r   r   ru   dataDirrL   rM   rK   s                    rN   r'   zCrustFrame.__init__6  s%    	T62uc4'0 	 	2&&tVW=2>>!LL$87B5==t45 ! #'e&0%.+:"('2)-););-1-C-C* %)*
 ZZ%%
 150B0B

- $(#5#5

 

rO   c                     | j                          | j                  j                  j                          | j	                          y)zEvent handler for closing.N)rx   r   r+   destroyDestroyrd   s     rN   OnClosezCrustFrame.OnClose]  s-    

  "rO   c                    d}dt         z  dz   dz   dz   dt        j                  z  z   dt        j                  j	                         d   z  z   d	t
        j                  z  z   d
dj                  t
        j                  dd       z  z   }t        j                  | ||t
        j                  t
        j                  z        }|j                          |j                          y)zDisplay an About window.zAbout PyCrustzPyCrust %s

z)Yet another Python shell, only flakier.

z"Half-baked by Patrick K. O'Brien,
z&the other half is still in the oven.

zPlatform: %s
zPython Version: %s
r   zwxPython Version: %s
z	(%s)
r   r   N)r	   sysplatformversionsplitr%   VERSION_STRINGr   PlatformInfoMessageDialogOKICON_INFORMATION	ShowModalr   )rF   re   r   r   dialogs        rN   OnAboutzCrustFrame.OnAboutd  s    ')<=56 ::  #,,.	/
 &(9(9(;A(>>? ("*;*;;< TYYrqr':;;= !!$e"$%%"*=*="=?rO   c                 6    | j                   j                         S )rZ   )r   r\   rX   s    rN   r\   zCrustFrame.ToggleToolsu  s    zz%%''rO   c                 6    | j                   j                         S r^   )r   r_   rX   s    rN   r_   zCrustFrame.ToolsShowny  s    zz$$&&rO   c                 D    t         j                  j                  | |       y)zShow a help dialog.N)r   r   OnHelprd   s     rN   r  zCrustFrame.OnHelp|  s    $$T51rO   c                     | j                   ot        j                  j                  |        t        j                  j                  | | j                          | j
                  j                  | j                          y y r^   )ru   r   r   rr   r   r   rX   s    rN   rr   zCrustFrame.LoadSettings  sS    ;;"!!..t4KK$$T4;;7JJ##DKK0 #rO   c                    | j                   t        j                  j                  | |       | j                  s|rPt        j
                  j                  | | j                          | j                  j                  | j                          y y y r^   )ru   r   r   rx   autoSaveSettingsr   r   )rF   forces     rN   rx   zCrustFrame.SaveSettings  se    ;;"!!..tE:$$((t{{;

''4 ). #rO   c                 v    | j                   -| j                  d       | j                   j                          y y )NT)r  )ru   rx   FlushrX   s    rN   DoSaveSettingszCrustFrame.DoSaveSettings  s2    ;;"D)KK #rO   )F)r{   r|   r}   r~   rJ   r%   r   r   DEFAULT_FRAME_STYLEr'   r   r   r\   r_   r  rr   rx   r
  r   rO   rN   r   r   0  sj    6D #r''bnn-- D$$d$N"('215 rO   r   )r~   
__author__r%   osr   rer   r   r   r   r   r   r   r+   r   r   r	   r&   r   r   r   r   r!   r5   r7   r   r   r   r   rO   rN   <module>r     s    <7
 	 	  	 
      EEB EEN%)j## %)R"bkk "63R[[ 3l% %6b e33 b rO   