
    d<                         d Z dZedz  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 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y)z:PySlices combines the slices and filling into one control.z1David N. Mashburn <david.n.mashburn@gmail.com> / z(Patrick K. O'Brien <pobrien@orbtech.com>    N   )
dispatcher)crust)document)
editwindow)editor)Filling)frame)SlicesShell)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dd	d	fd
Zy)CrustSliceszSlices based on SplitterWindow.Slicesi,  zSlices WindowNT Fc                    t         j                  j                  | ||||||       | j                         }| j	                  |t         j
                   z         t        || |
|||||||d	|| _        | j                  | _        | 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!                  | j&                  d       | j&                  j(                  | j                  j                  j                  d<   | j                  j+                         dz
  | j&                  _        t#        j.                  | j                  d      | _        | j                  j!                  | j0                  d       t#        j2                  | j                  d      | _        | j                  j!                  | j4                  d       t#        j6                  | j                        | _        | j                  j!                  | j8                  d       | j                  j;                          | j                  j;                          | j=                  | j                         d	| _        t        j@                  | jB                         | jE                  d       | jG                  t         jH                  | jJ                         | jG                  t         jL                  | jN                         | jG                  t         jP                  | jR                         y)zCreate CrustSlices instance.)	parent	introTextlocalsInterpClassstartupScriptexecStartupScriptshowPySlicesTutorialenableShellModehideFoldingMarginNr   r   idnotebook)r   
rootObject	rootLabelrootIsNamespacefilling	NamespaceT)pagetextselectr   Display)r$   r%   ppr   r   )r   ShellClassNameCalltipHistory
Dispatcherd   )*wxSplitterWindow__init__GetWindowStyleSetWindowStyleTAB_TRAVERSALr   
sliceshellr   shellinterpr   Notebookr   r	   r"   AddPager   r(   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   r   r   r   argskwdss                       3/usr/lib/python3/dist-packages/wx/py/crustslices.pyr1   zCrustSlices.__init__   s    	""4S$tL ##%ER%5%5$556% #' .2U(.K/<3D6J1@3D0 +/0 oo__
//66J4B748MM%%j1dmm*4)2/>@
 48<<%%i04<<k$O}}DMM:4<<i@.2ll.B.B%%d+!]]779!;}}DMMW4<<i@#22$--Wde4#6#6YG!&!8!8!N4#9#9M
 	( 
T++,$		"++t223		"22DNNC		"(($*;*;<    )__name__
__module____qualname____doc__rT   
sashoffsetr/   DefaultPositionDefaultSizeSP_3DSP_LIVE_UPDATEr1    rY   rX   r   r      sV    )DJ"$"*<*<nnBHHR5F5F,F%$$!%R!#t&*!&%E=rY   r   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dfdZ	d Z
d	 Zd
 Zd Zd Zd Zd Zd ZddZd Zd Zd ZddZddZd Zd Zd Zd Zd Zy)CrustSlicesFramez-Frame containing all the PySlices components.
SliceFrameNr   PySlicesTc                    t         j                  j                  | ||||||d       t         j                  j                  | ||       |t        j
                  k(  r| j                  d       dt        z  }| j                  |j                  dd             t        || ||||	|
|| j                  | j                  | j                  | j                  | j                  d|| _        | j                   j"                  | _        | j"                  | _        | j"                  j&                  | _        | j                  | j                   j(                  j*                  _        | j                  | j"                  _        | j"                  j/                          | j1                          t2        j4                  j7                  d      | _        |d	k7  r| j;                  |       | j=                  t        j>                  | j@                         y	)
zCreate CrustFrame instance.rg   )	shellName)i   iX  z2PySlices %s - The Flakiest Python Shell... Cut up!
, )r   rU   r   r    r!   r   r   r   r   r   r   r   ~N)!r
   Framer1   ShellFrameMixinr/   r`   SetSizer   SetStatusTextreplacer   r   r   r   r   r   r   r5   r6   bufferr"   treesetStatusTextSetFocusLoadSettingsospath
expandusercurrentDirectory
bufferOpenrI   EVT_IDLEOnIdle)rP   r   r   titlerQ   rR   rS   r   r    r!   r   r   configdataDirfilenamerV   rW   rU   s                     rX   r1   zCrustSlicesFrame.__init__k   s    	T62uc4'1 	 	3&&tVW=2>>!LL$DwN5==t45  #' )-E,6+41@(.-8/3/A/A373I3I6:6O6O151E1E373I3I0 +/0
 **//__
oo,,040B0B

- )-(:(:%  " " 2 23 7T>OOH%		"++t{{+rY   c                 $    | j                          y)zEvent handler for closing.N)bufferCloserP   events     rX   OnClosezCrustSlicesFrame.OnClose   s    rY   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 PySliceszPySlices %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)
rk   r   N)r   sysplatformversionsplitr/   VERSION_STRINGjoinPlatformInfoMessageDialogOKICON_INFORMATION	ShowModalDestroy)rP   r   r~   r%   dialogs        rX   OnAboutzCrustSlicesFrame.OnAbout   s      7*<=56 ::  #,,.	/
 &(9(9(;A(>>? ("*;*;;< TYYrqr':;;= !!$e"$%%"*=*="=?rY   c                     t         j                  j                  | |       | j                  j	                  | j
                         yz)Change between Slices Mode and Shell ModeN)r
   rm   OnEnableShellModer5   ToggleShellModer   r   s     rX   r   z"CrustSlicesFrame.OnEnableShellMode   s.    %%d51''(<(<=rY   c                     t         j                  j                  | |       | j                  j	                  | j
                         yr   )r
   rm   OnHideFoldingMarginr5   ToggleFoldingMarginr   r   s     rX   r   z$CrustSlicesFrame.OnHideFoldingMargin   s.    ''U3++D,B,BCrY   c                 D    | j                          |j                          y)zEvent handler for idle time.N)_updateTitleSkipr   s     rX   r}   zCrustSlicesFrame.OnIdle   s    

rY   c                     | j                         }| j                         r'|j                  d      ry| j                  d|z          y|j                  d      r| j                  |dd        yy)zShow current title information.z*    N)GetTitlebufferHasChanged
startswithSetTitle)rP   r~   s     rX   r   zCrustSlicesFrame._updateTitle   s_      "%dUl+%eABi( &rY   c                     | j                   ryy)z)Return True if there is a current buffer.TF)rr   rP   s    rX   	hasBufferzCrustSlicesFrame.hasBuffer   s    ;;rY   c                    | j                   j                         r| j                         }|r|S | j                          | j                  j
                  j                          | j                          | j                          y)zClose buffer.F)	rr   
hasChangedbufferSuggestSaveSaveSettingsr   r5   destroybufferDestroyr   rP   cancels     rX   r   zCrustSlicesFrame.bufferClose   sb    ;;!!#++-F

%%'rY   c                    | j                          t               }t        j                  | d      x| _        }|j                  t        j                  d        t        |      }||_        t        j                  t        j                        }|j                  |j                  dt        j                         |j                  |       |j                  d       |j!                          |j#                  |       |j%                  |       | j'                  |       | j                  j)                          | j+                          y)Create new buffer.r   r   c                     | S Nrc   )xs    rX   <lambda>z/CrustSlicesFrame.bufferCreate.<locals>.<lambda>   s    q rY   r'   r   TN)r   Bufferr/   PanelpanelrI   EVT_ERASE_BACKGROUNDEditorr   BoxSizerVERTICALAddwindowEXPANDSetSizerSetAutoLayoutLayout	addEditoropen	setEditorsetFocusSendSizeEvent)rP   r   rr   r   r   sizers         rX   bufferCreatezCrustSlicesFrame.bufferCreate   s    XXTb99
U

B++[9u%BKK(		&--BII.uD! HvrY   c                 :    | j                   rd| _        d| _         yy)zDestroy the current buffer.N)rr   r   r   s    rX   r   zCrustSlicesFrame.bufferDestroy   s    ;;DKDK rY   c                 P    | j                   r| j                   j                         S y)z2Return True if buffer has changed since last save.F)rr   r   r   s    rX   r   z!CrustSlicesFrame.bufferHasChanged   s    ;;;;))++rY   c                    | j                         }|r|S | j                  j                          | j                  d       d| j                  _        | j                  j                          t        j                         | j                  _	        d| j                  _
        | j                  j                  j                  | j                  _        d}|S )r   rg   Fz
This shell)r   r5   clearr   NeedsCheckForSaveSetSavePointr   Documentrr   docrT   filebase
modulenamer   s     rX   	bufferNewzCrustSlicesFrame.bufferNew  s    '')Mz"*/)$$&"++-'!%!9!9rY   c                 r   | j                         r| j                         }|r|S |dk(  r"t        j                  dd| j                        }|dk7  rY|dk7  rSt        |d      5 }| j                  j                  |       ddd       t        j                  j                  |      d   | _        | j                  t        j                  j                  |      d   d	z          d
| j                  _        | j                  j                          t        j                  |      | j                   _        | j                   j"                  j$                  | j                   _        | j                   j"                  j(                  | j                   _        | j                  j-                  d       y# 1 sw Y   .xY w)zOpen file in buffer.NzOpen a PySlices Filez
*.pyslices)wildcarddefault_pathr   rr   r    - PySlicesF)r   r   r/   FileSelectorrz   r   r5   LoadPySlicesFilerw   rx   r   r   r   r   r   r   rr   r   r   rT   r   r   ScrollToLine)rP   filer   fids       rX   r{   zCrustSlicesFrame.bufferOpen  sB     "++-F:!7*6.2.C.CED :$)d3 630056$&GGMM$$7$:D!MM277==.q1MAB.3DOO-OO((*&//5DKKO#{{77DKK%)[[__%=%=DKK"OO((+6 6s   $F,,F6c                    | j                   j                  j                  }|| j                   _        |sy t        j
                  j                  |      sd| j                   _        | j                   j                  s*| j                   j                  |      | j                   _        | j                   j                  rt        |d      5 }| j                  j                  |       d d d        | j                  j                          | j                  t        j
                  j                  |      d   dz          d| j                  _        y y # 1 sw Y   jxY w)NTwbr   r   F)rr   r   filepath	confirmedrw   rx   existsoverwriteConfirmr   r5   SavePySlicesFiler   r   r   r   )rP   r   r   r   s       rX   
simpleSavezCrustSlicesFrame.simpleSave7  s    ;;??++ )ww~~h'$(DKK!{{$$$(KK$@$@$JDKK!;;  h% 60056 OO((*MM277==215EF.3DOO- !6 6s   EEc                     | j                   j                  j                  r| j                  d       d}|S | j	                         }|S )zSave buffer to its file.Tr   F)rr   r   r   r   bufferSaveAsr   s     rX   
bufferSavezCrustSlicesFrame.bufferSaveH  sB    ;;??##OOdO+F  &&(FrY   c                    | j                         r4| j                  j                  j                  r| j	                         }|r|S d}| j                  r@| j                  j                  j
                  r | j                  j                  j
                  }t        j                  d|d      }|j                  dvr|j                  dd dk7  r|xj                  dz  c_        t        j                  |j                        | j                  _        | j                  j                  j                  | j                  _        | j                  j                  j                  | j                  _        | j                  d	
       d}|S d	}|S )Save buffer to a new filename.r   zSave PySlices File&PySlices Files (*.pyslices)|*.pyslicesr~   	directoryr   r   NN	.pyslicesTr   F)r   rr   r   r   r   filedirr   
saveSinglerx   r   r   r   rT   r   r   r   )rP   r   r   results       rX   r   zCrustSlicesFrame.bufferSaveAsR  s     "t{{'?'?++-F;;4;;??22kkoo--G"")=,TV;;i'{{23,[(&//<DKKO#{{77DKK%)[[__%=%=DKK"OOdO+F  FrY   c                    d}| j                   r@| j                   j                  j                  r | j                   j                  j                  }t        j                  d|d      }|j
                  dvre|j
                  dd dk7  r|xj
                  dz  c_        t        |j
                  d	      5 }| j                  j                  |       ddd       d
}|S d}|S # 1 sw Y   d
}|S xY w)r   r   zSave a Copy of PySlices Filer   r   r   r   Nr   r   FT)	rr   r   r   r   r   rx   r   r5   r   )rP   r   r   r   r   s        rX   bufferSaveACopyz CrustSlicesFrame.bufferSaveACopyj  s    ;;4;;??22kkoo--G"")GRY,TV ;;i'{{23,[( fkk4( 6C0056F  F6F s   2CC*c                 d   t        j                  dd| j                  j                  z  dt        j
                  t        j                  z  t        j                  z  t        j                  z  t        j                  z        }|j                  r| j                         }|S |j                  dk(  }|S )z=Suggest saving changes.  Return True if user selected Cancel.Nz0%s has changed.
Would you like to save it first?zSave current file?)r   messager~   rS   Cancel)r   messageDialogrr   rT   r/   YES_NOCANCEL
NO_DEFAULTCENTREICON_QUESTIONpositiver   r%   )rP   r   r   s      rX   r   z"CrustSlicesFrame.bufferSuggestSave  s    %%T(+-1[[-=-=(> &:%'YY%:R]]%J%'YY&/131A1A&BD ??__&F  [[H,FrY   c                 ~    | j                   j                         r| j                  d       y| j                  d       y)z<Update the buffer namespace for autocompletion and calltips.zNamespace updatedz+Error executing, unable to update namespaceN)rr   updateNamespacerp   r   s    rX   r  z CrustSlicesFrame.updateNamespace  s0    ;;&&(23LMrY   r   )F)rZ   r[   r\   r]   rT   r/   r_   r`   DEFAULT_FRAME_STYLEr1   r   r   r   r   r}   r   r   r   r   r   r   r   r{   r   r   r   r   r   r  rc   rY   rX   re   re   e   s    7D #r''bnn-- D$$dT/,b >
D

)( B4"0*NrY   re   )r]   
__author__r/   rw   pprintrer   r   r   r   r   r   r   r"   r	   r
   r5   r   r   r   Crustr   
CrustFramere   rc   rY   rX   <module>r     sk    @@
 
8 8
 	 	  	 
        # K=%++ K=ZnNu'' nNrY   