
aJc           @   s  d  d k  i Z e i   Z d e d <e d e Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k	 Z	 d  d k
 Z
 d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d Z d Z d  d k Z d Z d	 Z d
 Z d Z d Z d Z  d Z! d Z" d Z# d Z$ e i% e&  Z' e i( Z) e i* Z+ d* Z, d Z- d d d d d d d d d d d g Z. d  Z/ d! Z0 d" Z1 d# Z2 d$ Z3 d% Z4 e i5 o e i6 Z7 n
 e i8 Z7 d& Z9 d' Z: d( e i; f d)     YZ< d S(+   iNs   Subclassed smdi Parent frame.t   descriptiont   doc(   t   eventManagers5   Spe must be launched within Blender for this feature.i   s	   <default>s   /usr/bin/firefoxs   /usr/bin/nautilus --no-desktops   /usr/bin/dolphins   /usr/bin/konquerors   /usr/bin/thunars   /usr/bin/pcmanfmsK   Sorry, '%s' was not found on your system, getting it from internet instead.s,   http://www.python.org/doc/current/%s/%s.htmls2   mailto:spe.stani.be@gmail.com?subject=About spe...iX  i   t   defaultt   Shellt   Localst   Sessiont   Outputt   Findt   Browsert   Recentt   Todot   Indext   Notest   Donates   SPE %st   unnameds
   recent.txts   folders.txts	   notes.txts   remember.txts   spe_blender.pys   winpdb_blender.pyt   Panelc           B   sG  e  Z g  dn d  e e d  Z d   Z d d  Z dn dn d  Z d   Z	 d   Z
 d   Z d	   Z d
   Z d   Z g  d  Z d   Z d   Z d   Z d   Z d   Z d   Z dn d  Z e d  Z d   Z e d dn d  Z dn d  Z d   Z d   Z d   Z d   Z  dn d  Z! dn 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. e d+  Z/ d,   Z0 d-   Z1 d e2 e2 d.  Z3 d/   Z4 d0   Z5 d1   Z6 d2   Z7 d3   Z8 d4   Z9 d5   Z: d6   Z; d7   Z< d8   Z= d9   Z> d:   Z? d;   Z@ dn d  d  d< dn e d=  ZA dn d> d> d?  ZB d@   ZC dA   ZD dn dB  ZE dn dC  ZF dn dD  ZG dn e dE  ZH dn dF  ZI dn dG  ZJ dH   ZK dI   ZL d  dJ  ZM dK   ZN d  dL  ZO dM   ZP dN   ZQ dO   ZR dP   ZS dQ   ZT dR   ZU dS   ZV dT   ZW dU   ZX dV   ZY dW   ZZ dX   Z[ dY   Z\ d  dZ  Z] d[   Z^ d\   Z_ d]   Z` d^   Za d_   Zb ec id ec ie Bd`  Zf da   Zg db   Zh dc   Zi dd   Zj de   Zk d df  Zl dg   Zm dn dh  Zn di   Zo dj   Zp d  dk  Zq dl   Zr dm   Zs RS(o   i   c      
   K   sh   t  i i |  d | d t  i d t d | |  i |  |  i | | |  |  i   |  i   |  _	 d  S(   Nt   parentt   idt   stylet   size(
   t   wxt   Notebookt   __init__t   ID_ANYt   STYLEt	   __paths__t   __settings__t   __findReplaceEvents__t   emptyWorkspacet	   workspace(   t   selfR   t	   openFilest   splasht   redirectt   pathR   t   settings(    (    s   C:\py\_spe\Parent.pyR   >   s
    +
c         C   sZ   t  i   |  _ |  i t i |  i  t i |   |  _ t i	 |  i i
 |  i d   d  S(   Nt   Redraw(   t   threadt   allocate_lockt   lockt   BindR   t	   EVT_TIMERt   onTimert   Timert   timert	   CallAftert   Startt   getValue(   R   (    (    s   C:\py\_spe\Parent.pyt	   __timer__G   s    R   c         C   s  | |  _  t i  i |  i  d  |  _ t i  i |  i  d  |  _ t i  i |  i |  |  _ t i  i |  i  d  |  _ t i  i |  i  d  |  _ |  i t i  j o t i  i	 d |  i  n y t i
 t d  Wn/ t i  i t d  p d t d GHqn Xd  S(   NR   t   skinst   pluginst   tabsi    t   userPaths1   Warning: could not find or create user path (%s).(   R#   t   ost   joint   pathDoct	   pathSkinst
   pathImagest   pathPluginst   pathTabst   syst   insertt   mkdirt   INFOt   exists(   R   R#   t   skin(    (    s   C:\py\_spe\Parent.pyR   O   s    	c         K   s   | |  _  | |  _ t |  _ | |  _ | |  _ g  |  _ t |  _ d  |  _	 d  |  _
 g  |  _ d  |  _ d |  _ d |  _ d  |  _ t d j o t i |  _ n t i |  _ d  S(   Ni    t    t   win32(   t
   _openFilest	   _redirectt   Falset   _simultaneoust   redrawt   Blendert   argumentsPrevioust   beepPrevioust   Nonet   defaultEncodingt
   findDialogt   folderst   kikit   remembert   restartMessaget   runnert   PLATFORMR   t   LC_SMALL_ICONt
   LIST_STYLEt   LC_LIST(   R   R    R"   RI   RJ   t   kwds(    (    s   C:\py\_spe\Parent.pyR   ^   s"    														c         C   s   d |  _  d |  _ d |  _ d |  _ t i |  d |  i  t i |  d |  i  t i |  d |  i	  t i
 |  d |  i  t i |  d |  i  d  S(   NRC   i   i    i(   t   findStrt
   replaceStrt	   findFlagst   stcFindFlagsR   t   EVT_COMMAND_FINDt   onFindt   EVT_COMMAND_FIND_NEXTt   EVT_COMMAND_FIND_REPLACEt	   onReplacet   EVT_COMMAND_FIND_REPLACE_ALLt   onReplaceAllt   EVT_COMMAND_FIND_CLOSEt   onFindClose(   R   (    (    s   C:\py\_spe\Parent.pyR   t   s    				c         C   s"   |  i    |  i   |  i   d  S(   N(   t	   __icons__t   __sash__t	   __frame__(   R   (    (    s   C:\py\_spe\Parent.pyt
   __finish__   s    

c         C   s   t  i d d  |  _ h  |  _ h  |  _ t i i |  i d d g } | i	   xe | D]] } |  i
 i |  |  i | <|  i | i   d j o$ |  i i |  i |  |  i | <qV qV Wd  S(   Ni   t
   extensionss   .png(   R   t	   ImageListt	   iconsListt   iconst   iconsListIndext   smt   osxt   listdirR:   t   sortt   appt   bitmapt	   GetHeightt   Add(   R   t	   iconFilest   icon(    (    s   C:\py\_spe\Parent.pyRg      s    		
 c         C   sz  |  i  i o	 d GHn |  i  i |  _ |  i |  i  g  } t i i |  i d d g D]2 } | d  d j o | t	 i
 i |  d qX qX ~ } | i   t d  g  } | D] } | t j o | | q q ~ t d g } |  i  i p | i d  n h  |  _ x | D] } |  i  i o d	 G| GHn t d
 |  t d |  |   } |  i | i   <t i o | d j o
 d } n | } |  i d | d | d |  i | i   d  | |  i | <qW| |  _ |  i d  t d j o/ |  i |  i   d  |  i d t d  n t i  |  i! t" i# |   |  i$ d  d j  o! |  i d |  i$ d  d  n |  i%   d  S(   Ns   Creating tabs...Rk   s   .pyi   t   _i    iRJ   s   	s
   _spe.tabs.s   _spe.tabs.%s.PanelR   RC   t   paget   textt   imageIds   .pngt   versionR%   i
   i  (&   Rt   t   DEBUGt   configt   AssignImageListRm   Rp   Rq   Rr   R<   R6   R#   t   splitextRs   t   TABSRJ   t   removet   tabPanelt
   __import__t   evalt   __dict__t   lowert   infot   DARWINt   AddPageRo   R4   t   getR@   t   SetSelectiont   GetPageCountt   setR   t   Registert   onTabR   t   EVT_NOTEBOOK_PAGE_CHANGEDR0   R1   (   R   t   _[1]t   xR4   t   _[2]t   tabR{   R|   (    (    s   C:\py\_spe\Parent.pyRh      s:     	^
E	  ' 
-	!c         C   s   |  i  } | i t i |  i   t i t i i	 |  i
 d  t i  } | i |  t | d  o | i i |  n |  i   |  i d |  i  |  i   d  S(   Ns   favicon.icot
   panelFrameR    (   t   framet   SetDropTargett   Childt   DropOpent   openListR   t   IconR6   R#   R7   R:   t   BITMAP_TYPE_ICOt   SetIcont   hasattrR   t   preferencesSavet   __remember__RE   t	   __menus__(   R   R   Ry   (    (    s   C:\py\_spe\Parent.pyRi      s    	'
c         C   sS   |  i  i } |  i i o | i   | i   n |  i i p | i d  n d  S(   Ni    (   R   t   menuBarRt   t   mdit   check_sidebart
   check_viewt   childrent   enable(   R   R   (    (    s   C:\py\_spe\Parent.pyR      s    
c         C   s   |  i    y |  i d  Wn n X|  i   t |  d j o |  i d  |  i |  n t |  i i  d j o |  i d |  i	 d   n d  S(   Nt   currentworkspacei    i   t   maximizet   MaxChildren(
   t   __openWorkspace__R   t   loadWorkspacet   lent   rememberSetR   Rt   R   t   newR0   (   R   R    (    (    s   C:\py\_spe\Parent.pyR      s    

c         C   s  t  i i t d d  } t  i i |  pbt i   } | i d  y  | i d d |  i t	   Wn | i d d d  n X| i d  y  | i d d |  i t
   Wn | i d d d  n X| i d  y  | i d d |  i t   Wn | i d d d  n X| i d  y  | i d d |  i t   Wn | i d d d  n Xt | d	  } | i |  | i   | Sn d  S(
   NR5   s   defaults.swst   recentt   1RC   RP   t   notest	   openfilest   w(   R6   R#   R7   R@   t   isfilet   ConfigParsert   add_sectionR   t   userOpent   RECENTt   FOLDERSt   NOTESt   REMEMBERt   opent   writet   close(   R   t   filet   new_cft   f(    (    s   C:\py\_spe\Parent.pyt   _createNewDefaultWorkspace   s6        
c         C   s  t  d } t i i |  p |  i   n t i   |  i d <|  i d i |  t i   |  i d <|  i d  oy y0 |  i	 d  } t i i
 |  p
 d } n Wn d } n Xy% |  i d i |  | |  i d <Wq d } q Xn d } | d j o) |  i d |  i d <t  d |  i d <n g  |  i d <|  i d  o yB t |  i d	   } x& | D] } |  i d i | d
  qfWWqt j
 o1 } |  i i o |  i d | | f  qqXn |  i d t g    d  S(   Nt   defaultWorkspacet   defaultconfigR   t   RememberLastWorkspaceR   RC   R   R   t	   OpenFilesi    s#   Error opening workspace file %s: %s(   R@   R6   R#   R   R   R   R   t   readR0   R   RA   R   t   getWorkspaceValuet   appendt	   ExceptionRt   R   t   SetStatusTextt   setWorkspaceValuet   str(   R   R   R    t   it   e(    (    s   C:\py\_spe\Parent.pyR      sB    
 
  $c         C   sw   t  i i | i  |  _ |  i i p
 | i i pA y  | i i |  i d t i	 Wqs t
 j
 o } | GHqs Xn d S(   sV    this function will change the child tab to indicate that it is part of the workspace t   colourN(   R6   R#   t   basenamet   fileNamet   nameR   t   deadt   setTitleR   t   WHITER   (   R   t   childR   (    (    s   C:\py\_spe\Parent.pyt   applyWorkspaceTab"  s     c      "   C   s  y< |  i  d  o( x% |  i i D] } | i i   q  Wn Wn n Xg  |  i _ t } |  i  d  o
 t } n ye t	 |  i
 d |   } |  i i g  } | D]+ } | o t i i |  o | | q q ~  Wn n Xt } |  i  d  o
 t } n ym t	 |  i
 d |   } |  i i i | d  |  i i g  } | d D] } | o | | qKqK~  Wn n Xt } |  i  d  o
 t } n y& |  i
 d	 |  } |  i i |  Wn n Xg  }	 t } |  i  d
  o
 t } n yH t	 |  i
 d |   } g  }
 | D] } | o |
 | qq~
 }	 Wn n X|	 o? |  i d  |  i |	 d d d d  d |  i  d  d t n |  i |  i d  d  S(   Nt   CloseChildrenOnNewWorkspacet   globalRecentR
   t   globalFolderst   Foldersi    i   t   globalNotesR   t   globalFileListR   t   messaget   selectR   R   t   verboseR   (   R0   Rt   R   R   t   onFrameCloseR   t   filesRG   t   TrueR   R   t   addR6   R#   RA   t   browsert   deptht   SetValueR   R   R   RM   t   setWorkspaceStatusBarTextR   (   R   R   R   R   R   R   RP   R   R   t   fileListt   _[3](    (    s   C:\py\_spe\Parent.pyR   +  sd      
M 
> 
 
0c         C   s$   |  i  t i i |  d  t  d  S(   Ni(   t   SetActiveStatusTextR6   R#   R   t   STATUS_TEXT_WORKSPACE_POS(   R   R   (    (    s   C:\py\_spe\Parent.pyR   c  s    c         C   s4   h  t  i    d <d d <g  d <t  i    d <S(   NR   RC   R   R   R   (   R   (   R   (    (    s   C:\py\_spe\Parent.pyR   f  s    		c   
   
   C   s  | d j o d  Sn |  i  i o|  i  i } g  } |  i  i o g  |  i d <x |  i  i D] } | i t i j ot | i i   } | i i	 |  } | i i
 |  } | i | i | | f  |  i d i | i  |  i |  q[ q[ Wn |  i d |  i i    |  i d t |   |  i d t |  i i |  i d     |  i d t |  i i i   g |  i i   d   | p |  i d } n yK t | d	  } |  i d
 i |  | i   | |  i d <|  i |  Wn# t j
 o }	 d G| GH|	 GHn X|  i |  n d  S(   NRC   R   R   R   t   RecentFileAmountRP   i   R   R   R   s0   Spe warning: could not save workspace options in(   Rt   R   t   childActiveR   R   R   t   NEWFILEt   sourcet   GetCurrentPost   LineFromPositiont	   GetColumnR   R   R   R   t   GetValueR   R   R   R0   R   R   t
   getFoldersR   R   R   R   R   (
   R   t   filelocationR   R   R   t   post   linenot   colR   R   (    (    s   C:\py\_spe\Parent.pyt   saveWorkspacem  s@      )6 
	
c         C   sI   | o! |  i  d i | i   d  Sn |  i  d i | i   d  Sd S(   sB           returns the value of the workspace config file key        R   R   R   N(   R   R   R   (   R   t   typeR   (    (    s   C:\py\_spe\Parent.pyR     s    !c         C   sS   |  i  d i |  p |  i  d i |  n |  i  d i | i   d |  d S(   sF           sets the workspace config file key to a specific value        R   R   N(   R   t   has_sectionR   R   R   (   R   R   t   value(    (    s   C:\py\_spe\Parent.pyR     s     RC   c         C   sh   |  i  } | i |  i d t i i |  d | d | d | d | i d | } |  i i i d  | i	 S(   s"   Create a new empty script window.?R{   t   extraR   R   R   R   i   (
   Rt   t
   ChildFrameR   R6   R#   R   R   R   R   t   panel(   R   R   R   R   Rt   R   (    (    s   C:\py\_spe\Parent.pyR     s    			c         C   s   y t  i |  i i i  } Wn d } n Xt i |  d d | d d d t  i d t i t i	 B} | i
   t i j ow | i   } | oS |  i i oF |  i i } | o/ | i t i j o | i o | i i   q n |  i |  n | i   d S(   s   Open file(s) dialog.RC   s   Choose a file - www.stani.bet
   defaultDirt   defaultFilet   wildcardR   N(   R   t   dirnameRt   R   R   R   t
   FileDialogt   WILDCARDt   OPENt   MULTIPLEt	   ShowModalt   ID_OKt   GetPathsR   R   R   t   changedR   R   R   t   Destroy(   R   t   eventR  t   dlgR   R   (    (    s   C:\py\_spe\Parent.pyR     s     
	%c         C   s   y t  i |  i d  } Wn d } n Xt i |  d d | d d d t  i d t i } | i   t i j og | i	   } y( |  i
 d |  |  i   |  i   Wq t j
 o  } |  i d	 | | f  q Xn | i   d
 S(   s   Open file dialog.R   RC   s   Choose a file - www.stani.beR  R  R  R   R   s   Could not open workspace:%s
%sN(   R   R	  R   R   R
  t   WORKSPACE_WILDCARDR  R  R  t   GetPathR   R   R   R   R   R  (   R   R  R  R   R   (    (    s   C:\py\_spe\Parent.pyt   open_workspace  s"    
	
 c         C   sA   y |  i    Wn, t j
 o  } |  i d t | f  n Xd S(   s   Save file dialog.s   Could not save workspace:%s
%sN(   R   R   R   R   (   R   R   (    (    s   C:\py\_spe\Parent.pyt   save_workspace  s    c         C   s  y |  i  d } Wn d } n Xt i o | i d d  } n t i |  d d | d t i |  d t i d	 t i t i	 Bt i
 B} | i   t i j o` | i   } y! |  i d
 |  |  i |  Wq t j
 o  } |  i d | | f  q Xn | i   d S(   s   Save file dialog.R   RC   t   /s   \s    Save Workspace As - www.stani.beR  R  R  R   R   s   Could not save workspace:%s
%sN(   R   R   t   WINt   replaceR   R
  R	  R  t   SAVEt   OVERWRITE_PROMPTt
   CHANGE_DIRR  R  R  R   R   R   R   R  (   R   R  R  R   R   (    (    s   C:\py\_spe\Parent.pyt   save_workspace_as  s&    

	 c         C   s"   |  i  d  o |  i   n d  S(   Nt   SaveWorkspaceOnFileSave(   R0   R   (   R   (    (    s   C:\py\_spe\Parent.pyt   save  s    c         C   s{   |  i  i oj |  i  i i i d d  } | o" | d d j o |  i |  qw | p
 d } n |  i d |  n d S(   s'   Locate source file of word and open it.t   wholei   i    t   "RC   s   Sorry, can not locate file %sN(   Rt   R   R   R   t   getWordFileNameR   R   (   R   R  R   (    (    s   C:\py\_spe\Parent.pyt   browse_source  s     
c         C   sQ  |  i  i o@|  i  i i i   } | o$ |  i o |  i i   d |  _ n |  i o% |  i i d  |  i i	   d Sn | p |  i
 } n d |  _ t i |  i  } | i |  | i |  i  t i |  | d t i t i B |  _ |  i i   \ } } |  i i | d | d f  |  i i d  |  i i	   | |  i _ n d S(   s#   Find and Replace dialog and action.i   Ni    s   Find & Replacei   i   (   Rt   R   R   R   t   GetSelectedTextRO   R  RM   t   Showt   RaiseRZ   t   numberMessagesR   t   FindReplaceDataR\   t   SetFindStringt   SetReplaceStringR[   t   FindReplaceDialogt   FR_REPLACEDIALOGt   FR_NOUPDOWNR   t   GetPositiont   SetPositiont   data(   R   R  RZ   R2  R   t   y(    (    s   C:\py\_spe\Parent.pyt   find_replace  s,    
	c         C   s   |  i  i o |  i  i } | i } | i   } | i   pl |  i d  o |  i d  o d Sn |  i d  o | i   o d Sn | i	 d  | i
   } n |  i i |  n d S(   t   Executet   ExecuteWarnings\   As there is no code selected,
SPE will run the whole script.

Are sure you want to continue?Nt   SaveBeforeRuns<   As there is no code selected, SPE will run the whole script.(   Rt   R   R   R   R&  t   stripR0   t   messageConfirmt   confirmSavet	   setStatust   GetTextt   shellR5  (   R   R   R   t   code(    (    s   C:\py\_spe\Parent.pyt   execute  s    	!c         C   s3   d d k  l } | i |  d d  } | i   d S(   s   Show preferences dialog box.i(   t   preferencesDialogRC   N(   t   dialogsR@  t   CreateR  (   R   R@  t   prefs(    (    s   C:\py\_spe\Parent.pyt   preferences(  s    c      
   C   s  d d k  l } d d k } t i } | i d  } | i d  } | p | d } } n d } } } x t t f D] }	 t	 i
 i | |	  }
 | |
 t	 i
 i | |	  d d } | d ok | d	 |	 7} | oR t	 i | t	 i  o< y. t	 i t	 i
 i | |	   | d	 |	 7} Wq'q'Xq+qv qv W| i   d
 } | o | d | d | f 7} n | o | d | d | f 7} n |  i |  d S(   s-   Adds SPE and Winpdb shortcuts to Blender menui(   t	   copy_fileNt   uscriptsdirt
   scriptsdirRC   t   updatei   s   , s   Blender menu updated.

s   Copied %s to %s.

i   s   Removed %s from %s. (   t   distutils.file_utilRE  RJ   R   t   PATHt   GetRM   t   BLENDER_SHORTCUT_SPEt   BLENDER_SHORTCUT_WINPDBR6   R#   R7   t   accesst   W_OKR   t   UpdateMenusR   (   R   RE  RJ   t   srcdirt   dstdirt   altdirt	   cpyresultt   rmresultt   mresultt   fnamet   srct   resultt   msg(    (    s   C:\py\_spe\Parent.pyt   add_spe_to_blender0  s6    	  $
  c         C   sG   x* |  i  i D] } | i i | i    q W|  i d | i    d S(   s   Toggle visibility white space.t   ViewWhiteSpaceN(   Rt   R   R   t   SetViewWhiteSpacet	   IsCheckedR   (   R   R  R   (    (    s   C:\py\_spe\Parent.pyt
   whitespace_  s     c         C   sh   xK |  i  i D]= } | i   o | i i d d  q | i i d d  q W|  i d | i    d S(   s   Toggle visibility line numbers.i   i2   i    t   ViewLineNumbersN(   Rt   R   R^  R   t   SetMarginWidthR   (   R   R  R   (    (    s   C:\py\_spe\Parent.pyt   linenumberse  s     c         C   sG   x* |  i  i D] } | i i | i    q W|  i d | i    d S(   s%   Toggle visibility indentation guides.t   IndentationGuidesN(   Rt   R   R   t   SetIndentationGuidesR^  R   (   R   R  R   (    (    s   C:\py\_spe\Parent.pyt   indentation_guideso  s     c         C   sG   x* |  i  i D] } | i i | i    q W|  i d | i    d S(   s'   Toggle visibility right edge indicator.t   ViewEdgeN(   Rt   R   R   t   SetViewEdgeR^  R   (   R   R  R   (    (    s   C:\py\_spe\Parent.pyt   right_edge_indicatoru  s     c         C   sG   x* |  i  i D] } | i i | i    q W|  i d | i    d S(   s%   Toggle visibility end of line marker.t   ViewEolN(   Rt   R   R   t
   SetViewEOLR^  R   (   R   R  R   (    (    s   C:\py\_spe\Parent.pyt   end_of_line_marker{  s     c         C   sl   t  |  i d  o( |  i i o |  i i i i   qh n. t |  i d d   } | o | i t	  n d  S(   Nt   TileR4   (
   R   R   Rt   R   R   t   Maximizet   getattrRM   Rl  RG   (   R   R  R4   (    (    s   C:\py\_spe\Parent.pyt   as_notebook  s    c         C   sa   t  |  i d  o |  i i t i  n4 t |  i d d   } | o | i t t i  n d  S(   NRl  R4   (   R   R   Rl  R   t   VERTICALRn  RM   R   (   R   R  R4   (    (    s   C:\py\_spe\Parent.pyt
   as_columns  s
    c         C   sa   t  |  i d  o |  i i t i  n4 t |  i d d   } | o | i t t i  n d  S(   NRl  R4   (	   R   R   Rm  R   t
   HORIZONTALRn  RM   Rl  R   (   R   R  R4   (    (    s   C:\py\_spe\Parent.pyt   as_rows  s
    c         C   s   |  i  } t | d  o4 | i i   d } | d j  o
 d } q d } nM t | d  o | i i   } n) t | d  o | i i   } n t S|  i	 | d t
 | S(   s   Show/hide shellt   sashi   i
   i    R   t   splitR!  (   R   R   Rt  t   GetSizeR   t   IsShownRu  t   IsSplitRG   t	   showShellR   (   R   R   t   heightt   hidden(    (    s   C:\py\_spe\Parent.pyt   toggle_shell  s    	

c         C   s  | o |  i  d |  n |  i } t | d  oZ | o  | i i t i d d   n | i i t i d d   t i   i |  nw t | d  o! | i	 i
 |  | i	 i   nF t | d  o5 | o | i i | i |  d  q| i i   n d  S(	   Nt	   ShowShellRt  i  i   i   R   Ru  i8(   R   R   R   Rt  t   SetDefaultSizeR   t   Sizet   LayoutAlgorithmt   LayoutMDIFrameR   R'  t   ActivateRu  t   SplitHorizontallyR4   t   Unsplit(   R   t   showR!  R   (    (    s   C:\py\_spe\Parent.pyRy    s     	 c         C   s  |  i  i ow|  i  i } t | d  o9 t i | i  } t i i	 |  p t i
   } qn n t i
   } t i i	 t  o t i d t | f  qt i i	 t  o t i d t | f  qt i i	 t  o t i d t | f  qt i i	 t  o t i d t | f  qt i i	 t  o t i d t | f  q| d d j o d | } n t i |  n d S(   s   Browse folderR   s	   %s "%s" &i    R  s   file://N(   Rt   R   R   R   R   R	  R   R6   R#   RA   t   getcwdt   THUNARt   systemt   NAUTILUSt   DOLPHINt	   KONQUERORt   PCMANFMt
   webbrowserR   (   R   R   R#   (    (    s   C:\py\_spe\Parent.pyt   browse_folder  s(     c      	   C   s  |  i  i   o9 |  i d  o |  i  i   n |  i  i t  d  Sn |  i i o5|  i i } | i	   p |  i  i t  d  Sn | i
   o |  i  i t  d  Sn d d k l } | | i |  i |  i d |  i d d } | i   } | i i   } | i i   } | i   | t i j oM | |  i j o |  i i d |  n | |  _ |  i | d | d t q|  i  i t  n d  S(	   Ns   SPE will try to kill the running script.

Warning:this might kill SPE as well.
It is highly recommended to save all scripts first.

Are you sure you want to continue?i(   t	   RunDialogR   R   i    t   beept   confirm(   t   outputt   IsBusyR9  t   Killt
   _check_runRG   Rt   R   R   R:  t   isNewt   _spe.dialogs.runDialogR  R   RK   RL   R   R  t	   argumentsR   R  R  R   R  R>   t   run_with_arguments(   R   R   R  t	   runDialogt   answerR  R  (    (    s   C:\py\_spe\Parent.pyt   run  s:    				
	c   	      C   s  |  i  i   o |  i  i   d  Sn |  i i o |  i i } | o | i   o d  Sn | i   o d  Sn t i	 i
 | i  \ } } h  t i	 | i  d <| d <| d <t i d <} d | } | d <t i |  |  i  i d | d | d | n d  S(	   NR   R#   R  t   pythons   %(file)s %(arguments)st   labels   %(python)s -u %(label)sR  (   R  R  R  Rt   R   R   R:  R  R6   R#   Ru  R   R   t   PYTHON_EXECt   chdirR5  (	   R   R  R  R  R   R#   R   t   paramsR  (    (    s   C:\py\_spe\Parent.pyR    s"     		c         C   sl   |  i  pQ y d d k l } Wn$ t j
 o |  i d  d Sn X| |  i  |  _  n |  i  i   d S(   s   Run filei(   t   Runners,   You need to install
winpdb for this feature.N(   RT   t   _spe.plugins.spe_winpdbR  t   ImportErrort   messageErrorRt   t   switch(   R   R  (    (    s   C:\py\_spe\Parent.pyt	   run_debug  s    
	c         C   s   |  i  i o |  i  i } |  i d  p | i   o | i   o d Sn |  i   | i } |  i i	 d |  d |  i _
 |  i i d |  d |  i _
 |  i i   |  i o |  i   n |  i   |  i   q n d S(   t   ImportR7  Ns   Importing "%s" ...i   s   execfile(r"%s")i    (   Rt   R   R   R0   R:  R  t   busyShowR   R=  R   t   waitingR5  t   promptRI   t   activateShellt   busyHide(   R   R   R   (    (    s   C:\py\_spe\Parent.pyt   import_!  s      
	
 
c         C   s   |  i  i } | i   p d  Sn | i   o d  Sn |  i pQ y d d k l } Wn$ t j
 o |  i d  d  Sn X| |  i   |  _ n |  i i	   d  S(   Ni(   R  s,   You need to install
winpdb for this feature.(
   Rt   R   R:  R  RT   R  R  R  R  t   debug(   R   R   R  (    (    s   C:\py\_spe\Parent.pyR  3  s     
	c         C   s   d d k  l } |  i d  } y |  i i i | } Wn |  i d | d  d Sn X| d |  d d d	 d
 d t i d t i	 d d  d t i
 d | d t |  d d d d  
} | i d  t i d | i  d S(   s   Browse object with pyfillingi(   t   FillingFrames   Enter object:s   %s is not definedi   NR   R   t   titlet	   PyFillingR   R   iX  i,  R   t
   rootObjectt	   rootLabelt   rootIsNamespacei    t   statici  (   t   wx.py.fillingR  t   messageEntryR=  t   interpt   localsR   R   t   DefaultPositionR  t   DEFAULT_FRAME_STYLER   R'  t
   FutureCallR(  (   R   R  R   t   objectt   filling(    (    s   C:\py\_spe\Parent.pyt   browse_object_with_pyfillingB  s    c         C   s   y |  i  i   Wno y d d k  l  } Wn# t j
 o d d k l  } n Xt i | i  t d <| i |  d t |  _  n X|  i	 d d  d S(   s$   Test regular expression with Kiki...i(   RQ   t   kikiPathR   s   Kiki is succesfully started.i   N(
   RQ   R(  R  t   plugins.kikiR   R	  t   __file__R@   t	   speCreateR   (   R   RQ   (    (    s   C:\py\_spe\Parent.pyt!   test_regular_expression_with_kikiR  s    c         C   s2  yW d d  k  } | i d d g d | i i i   i   } t i t i | |  d  SWn n Xy d d k	 l
 } Wn: t j
 o d d k l
 } n |  i d  d  Sn Xt i |  } d t i i | d  } t i o d	 | j o d
 | } n t i t i t i t i |  |  i d d  d  S(   Nit   whicht   wxgladet   stdout(   R  s>   You need to install
wxglade (python-wxglade)
for this feature.s   %ss
   wxglade.pyt    s   "%s"s   wxGlade is succesfully started.i   (   t
   subprocesst   Popent   PIPER  R   R8  R6   t   spawnlt   P_NOWAITR  R  R  t   plugins.wxGladeR  R   R	  R#   R7   R  R  R   (   R   R  t   gladeR   R#   (    (    s   C:\py\_spe\Parent.pyt   design_a_gui_with_wxglade_  s*    c      
   C   s   y d d k  l } Wn: t j
 o d d k l } n |  i d  d  Sn Xd d  k } t i i | i	  } d t i i
 | d  } t i o d | j o d | } n t i t i t i t i |  |  i d d	  d  S(
   Ni(   t   xrcedsI   You need to install
the wxpython tools (python-wxtools)
for this feature.s   %ss   spe_xrced.pyR  s   "%s"s"   XRC editor is succesfully started.i   (   t   wx.tools.XRCedR  R  t   plugins.XRCedR  R3   R6   R#   R	  R  R7   R   R  R  R  R  R   (   R   R  R3   R#   (    (    s   C:\py\_spe\Parent.pyt   design_a_gui_with_xrcx  s    c         C   sH   |  i  d  } | t j o t i t  n t i d | t f  d  S(   Nt
   WebBrowsers   %s '%s'(   R   t   DEFAULTR  R   t   MAILR6   R  (   R   R  (    (    s   C:\py\_spe\Parent.pyt   contact_author  s    c         C   s3   d d k  l } | i |  d |  i i d  d  S(   Ni(   t   helpShortcutsDialogR#   i   (   RA  R  t   createR#   R'  (   R   R  (    (    s   C:\py\_spe\Parent.pyt   keyboard_shortcuts  s    c   	   
   C   s  |  i  d  } t | | f } | t j ot i d j o t i i t d d  } t i i t d d d  } t i i	 |  o |  i
 |  qt i i	 |  o |  i
 |  qt i i t d | d  } t i i	 |  o |  i
 |  q|  i
 |  |  i t | d  qd	 i t d
 t t i d  d t t i d  d | g  } d	 i t d t t i d  d t t i d  d t t i d  d | g  } t i i	 |  o |  i
 |  qt i i	 |  o |  i
 |  q|  i
 |  |  i t | d  n t i i | d d  } t i d j o t i i	 |  o
 | } n t i i | | d  } t i i	 |  o |  i
 |  n" |  i
 |  |  i t | d  d  S(   Nt
   PythonDocsRD   t   Docs   ActivePython.chmt	   Enthoughts   enthought_python.chms
   index.htmli   RC   s   /share/doc/pythoni    t   .s   /html/%s/index.htmls   /share/doc/python-docs-i   (   R   t   HELP_WWWR  R=   t   platformR6   R#   R7   t   PREFIXRA   t   messageHtmlR   t
   HELP_SORRYR   t   version_info(	   R   t   whatt
   pythonDocst   wwwHelpt   helpActivePythont   helpEntoughtPythont   libraryt   linux1t   linux2(    (    s   C:\py\_spe\Parent.pyt   python_help  sD    #&   #
c         C   sC   d d k  l } t i t i t i t i | d  |  i d  d  S(   Ni(   R  s   -gs   http://localhost:7464/(   t   pydocR  R6   R  R  R   R  R  (   R   R   (    (    s   C:\py\_spe\Parent.pyt   python_documentation_server  s    "c      	   C   sY  |  i  d  } | t j o% t i i t i t i  d  } n t i i t i |  d  } d } d  } xn | | | g D]] } xT d d d g D]C } | p6 t i i | |  } t i i
 |  o
 | } q q q Wq{ W| o |  i |  nb t i i
 t i i | d   o2 t i t i t i t i t i i | d   n |  i d	  d  S(
   Nt   WxPythonDocst   docss0   C:\Program Files\wxPython2.8 Docs and Demos\docss   wx.chms   wxPythonDocs.htmls   wxPythonManual.htmls   wxDocsViewer.apps/   wxDocsViewer.app/Contents/Resources/viewdocs.pysT   wxPython documentation could not be found. Check the path in the preferences dialog.(   R   R  R6   R#   R7   R   R	  R   R  RM   RA   R  R  R  R  R   (   R   R  t   WxPythonDocs2t   WxPythonDocs3R#   t   dirR  t   p(    (    s   C:\py\_spe\Parent.pyt   wxwindows_documentation  s(    %  "c         C   s0   d d k  l } | i |  |  i d d t d  S(   Ni(   t
   helpDialogs	   about.htmt   replacements(   RA  R  R  R#   R@   (   R   R  (    (    s   C:\py\_spe\Parent.pyt   about  s    t   linec         C   s  t  |  t i j o | g } n d
 } xK| D]C}	 t  |	  t i j o |	 \ }	 } } n t i i |	  p q0 n |  i i	 o d |	 GHn |  i
 |	  } | oF | i i   | o | i | | d | qg|  i d |	 d  ny y t |	  i   }
 Wn d }
 n X|  i d |	 d |
 d |  } |  i i |	 g  | o | i | | d | n d
 } d } q0 Wt |  i i  d	 j o |  i i i d  n | S(   s   Open a list of files.s
   Opening %sR   s   '%s' is already openi   RC   R   R   R   i    N(   R   t   typest   ListTypeRM   t	   TupleTypeR6   R#   RA   Rt   R   t   getChildByFileNameR   R(  t   scrollToR   R   R   R   R   R   R   R   R   R   (   R   R   R   R   R   R   R   R   R   R   R   (    (    s   C:\py\_spe\Parent.pyR     s<       
 
 i    c         C   s   |  i  i d |  d |  i  _ |  i  i i d  | o+ d | } |  i  i i d | | f  n d } y- d | | | | f } |  i  i i |  Wn t j
 o } d | GHn X|  i  i   |  i o |  i   n |  i   d	 S(
   s_   
        separate: run in seperate namespace to avoid conflicts with the spe namespace
        s   Running '%s' ...i   s   import sm.scriptutilss   namespace["%s"]s   %s={"__fileName__":"%s"}s   locals()sE   sm.scriptutils.run(fileName=r"%s",source=%s,mainDict=%s,profiling=%s)s   
(Spe internal warning: %s!)N(	   R=  R   R  R  t   pushR   R  RI   R  (   R   R   R   t   separatet	   profilingt	   nameSpacet
   runCommandR   (    (    s   C:\py\_spe\Parent.pyt   runFile  s"    
!
 c         C   sB   |  i  i o |  i t d t n |  i i   |  i d  d  S(   NR!  i    (   Rt   R   Ry  R   R   R(  R   (   R   (    (    s   C:\py\_spe\Parent.pyR    s    c      	   C   s-  |  i  i o d |  i GHn |  i i   p3 |  i t i |  i  |  i i	 |  i
 d   n g  } y xA |  i  i D]3 } | i   o  | i t i i | i   qv qv W| o! |  i d d i |  d  n | o | i   n Wn; t j
 o/ } |  i  i o d |  i t | f GHq)n Xd S(   sF   Check and update, if files are changed when parent frame is activated.s   Event:  Parent: %s.onActivateR%   s   Reloaded %st   ,i   s,   Warning: Parent: %s.onActivate failed
%s
%s
N(   Rt   R   t	   __class__R-   t	   IsRunningR)   R   R*   R+   R/   R0   R   t	   checkTimeR   R6   R#   R   R   R   R7   t   SkipR   (   R   R  t   reloadedR   t   m(    (    s   C:\py\_spe\Parent.pyt
   onActivate%  s$     $ ! c         C   s   |  i  i oS |  i  i } |  i i o5 | o. t | d  o | i i   | i i   q` n |  i	 i
   |  i t i  d  S(   NR   (   Rt   R   R   R   R   R   R   t   AutoCompCancelt   CallTipCancelR-   t   Stopt   UnbindR   R*   (   R   R  R   (    (    s   C:\py\_spe\Parent.pyt   onDeactivate8  s    %c         C   sr  |  i  i o d |  i GHn x@ |  i  i D]2 } | i   p | i   | i d  t Sq* q* Wt i	 |   |  i
 i   d |  i _ |  i d  |  i oN |  i  i oA |  i  i } |  i  i o$ | o |  i d | i i    q n |  i  i   } | i   } | i   p |  i d | i   i  t i o1 t i d j o! |  i d | i   i d	  n |  i d | i   i  |  i d
 | i   i  |  i d | i   i  |  i d d  n |  i d d  yA |  i d  o |  i   n |  i o |  i t  d  n Wn0 t! j
 o$ } |  i" d | t  d f  n X|  i d  p |  i d d  n d S(   s'   Called when the parent frame is closed.s   Event:  Parent: %s.onCloses*   Please save this file before quitting SPE.i   i    R   t   sizexs   2.8t   sizeyi/   t   posxt   posyR   RG   R   t
   SaveOnExitR   sc   Spe Warning: can't save user settings (%s).
Please report these details and operating system to %s.t   author_emailR   R   RC   (#   Rt   R   R	  R   R:  R(  R   RG   R   t   DeregisterWindowR-   R  R   R   R"   RR   R   R   R   t   IsMaximizedt   GetTopWindowt   GetRectRv  R   R   R   R   t   VERSION_STRINGR3  R0  R0   R   R@   R   t   messageEmail(   R   R  R   t   activet
   mainWindowt   selfSizeR   (    (    s   C:\py\_spe\Parent.pyt   onCloseD  sL     
!!
c         C   s*   |  i  d t d t  |  i i i   d  S(   NR  R!  (   Ry  RG   R   R   R   R   (   R   R  (    (    s   C:\py\_spe\Parent.pyt   onClosePanelFrameq  s    c         C   s{   |  i  i   o] |  i  i o4 |  i  i } |  i i   p | i d  |  qQ n |  i o |  i   qw n |  i	   d  S(   N(
   Rt   t   IsActiveR   R   R(   t   lockedt   idleRM   RI   R  (   R   R  t   endR   (    (    s   C:\py\_spe\Parent.pyR+   u  s    
c         C   s9   |  i  i o d |  i GHn |  i o |  i   n d S(   s&   Called when the parent frame is moved.s   Event:  Parent: %s.onMoveN(   Rt   R   R	  RI   (   R   R  (    (    s   C:\py\_spe\Parent.pyt   onMove  s    
 c         C   s9   |  i  i o d |  i GHn |  i o |  i   n d S(   s(   Called when the parent frame is resized.s   Event:  Parent: %s.onSizeN(   Rt   R   R	  RI   (   R   R  (    (    s   C:\py\_spe\Parent.pyt   onSize  s    
 c         O   s!   |  i  | |   |  i i   d  S(   N(   R   R=  R  (   R   t   argst   keyw(    (    s   C:\py\_spe\Parent.pyt   onArgs  s    c         C   s(   t  i d t d | | | | f  d  S(   Ns5   mailto:%s?subject=SPE %s error report&body="%s %s
%s"R  (   R  R   R@   (   R   R   R  t	   traceback(    (    s   C:\py\_spe\Parent.pyt
   excepthook  s    c         C   s  |  i  i o|  i  i i } y{ | i   |  _ | i   |  _ d } t i	 |  i @o | t i
 i O} n t i |  i @o | t i
 i O} n | |  _ Wn n X| i   } | i | t | i    |  i |  i  } | d j oO d |  _ | i d | t |  i  |  i |  i  } |  i d |  i d  n | d j oA | o: |  i d j  o* d |  _ |  i d |  i  d |  _ nG | i |  } | i |  | i |  | i | | t |  i   | Sn d  S(   Ni    ii   s   Wrapped around to find '%s's   '%s' not found!(   Rt   R   R   R   t   GetFindStringRZ   t   GetFlagsR\   R   t   FR_WHOLEWORDt   stct   STC_FIND_WHOLEWORDt   FR_MATCHCASEt   STC_FIND_MATCHCASER]   R   t   FindTextR   R<  t   wrappedR   R)  R   R   t   EnsureVisiblet   GotoPosR   (   R   R  R   R   t   flagst   currentt   positionR  (    (    s   C:\py\_spe\Parent.pyR_     s:    	+$	c         C   s   | i    i   d |  _ d  S(   Ni    (   t	   GetDialogR  R)  (   R   R  (    (    s   C:\py\_spe\Parent.pyRf     s    c         C   s  |  i  i o| i   } | i   |  _ | |  i j o d Sn |  i  i i } | i   } | i   t	 i
 @p: | i   } | i   } | |  i i   j o d Sq n | | j o= | i   } | i |  i  | i | | t |  i   n |  i | d | } | Sn d  S(   NiR   (   Rt   R   R1  t   GetReplaceStringR[   R   R   R&  R2  R   R3  R   t   GetSelectionStartt   ReplaceSelectionR   R   R_   (   R   R  R   RZ   R   t	   selectionR>  (    (    s   C:\py\_spe\Parent.pyRb     s$    !c         C   s  |  i  i o|  i  i i } d } d |  _ | i   } } xZ | d j oL |  i p | | j  o4 |  i | d d } | d j o | d 7} q> q> W| o- |  i d | i   | | i	   f d  q| o= |  i
 d j  o- d |  _
 |  i d | i    d |  _
 qn d  S(   Ni    iR   i   s#   '%s' is %s times replaced with '%s's   '%s' not found!(   Rt   R   R   R   R9  R   Rb   R   R1  R@  R)  R   (   R   R  R   t   countR>  t   start(    (    s   C:\py\_spe\Parent.pyRd     s"    	 % 	$	c         C   s   | i    } |  i | } d | } t |  |  o t |  |    n t i o* |  i | i   d  |  i | |  n | i   d  S(   NRH  RC   (	   t   GetSelectionR4   R   Rn  R   R   t   SetPageTextt   GetOldSelectionR  (   R   R  R   t   tabNamet   method(    (    s   C:\py\_spe\Parent.pyR     s    

c         C   s1   |  i  | i   \ } } |  i | | d  d  S(   Ni   (   t   todoListt   GetDataR   (   R   R  R   R  (    (    s   C:\py\_spe\Parent.pyt
   onTodoJump  s    c         C   s'   y | i    | i SWn d Sn Xd  S(   Ni   (   t
   updateTodot   todoMax(   R   R   (    (    s   C:\py\_spe\Parent.pyRO    s
    
c         C   s  |  i  i   d } g  |  i  _ g  } |  i i D] } | |  i |  q0 ~ d g } t |  } x]|  i i D]O} | } x | i D] } | \ } } }	 |  i  i | t	 i
 i | i   }
 |  i  i | d t | d   |  i  i | d t |   |  i  i | d |	  |  i  i i | i | d f  |  i  i |
 |  | d 7} q W| i | j o] xZ | i D]K } |  i  i | | i  }
 |
 i t i d d d   |  i  i |
  qkWqo qo Wd  S(   Ni    i   i   i   i   (   t   todot   DeleteAllItemst   listRt   R   RO  t   maxRK  t   InsertStringItemR6   R#   R   R   t   SetStringItemR   R   t   SetItemDatat   todoHighlightst   GetItemR   t   SetBackgroundColourt   Colourt   SetItem(   R   t	   todoIndexR   R   RO  t   todoIndexStartt   taskR  t   urgencyt   entryt   itemR   (    (    s   C:\py\_spe\Parent.pyRN    s0    7 
 $  
 c         C   s=   |  i  | i   \ } } } } } } |  i | | d  d  S(   Ni   (   t	   indexListRL  R   (   R   R  t   strippedR`  R  R   Ry   R   (    (    s   C:\py\_spe\Parent.pyt   onIndexJump  s    %c      
   C   s  |  i  i   g  } |  i  _ x. |  i i D]  } | i   | i | i  q* W| i   d } d } d } x | D] } | \ } } }	 }
 } } | d | j o+ | d } |  i  i	 | |  | d 7} n |  i  i
 | d | i d  d t i i |  f |  } |  i  i | |  |  i  i |  } | i |
  |  i  i |  | d 7} | d 7} qq W|  i  i   o% y |  i  i d d  WqqXn d  S(   NRC   i    i   s   %s@%st   (iid   (   t   indexRQ  RR  Rt   R   t   updateIndext   extendt	   indexDataRs   RT  t   InsertImageStringItemRu  R6   R#   R   RV  RX  t   SetTextColourR[  t   GetItemCountt   SetColumnWidth(   R   Rb  R   t   firstLetterR   Rf  t   elementRc  R`  R  R   Ry   R   Ra  (    (    s   C:\py\_spe\Parent.pyRg    s:     

 
;
c         C   s   t  i   d  S(   N(   R   t   BeginBusyCursor(   R   (    (    s   C:\py\_spe\Parent.pyR  4  s    c         C   s   t  i   d  S(   N(   R   t   EndBusyCursor(   R   (    (    s   C:\py\_spe\Parent.pyR  7  s    c         C   s'   |  i  o d Sn |  i t  d Sd S(   sD   Check if source is running in Blender, otherwise give error message.i   i    N(   RJ   R  t   BLENDER_MESSAGE(   R   (    (    s   C:\py\_spe\Parent.pyt   checkBlender:  s    
 c         C   sX   |  i  i oG |  i  i } | i i o | i i i |  qT |  i i i |  n d  S(   N(   Rt   R   R   R   R   t	   check_run(   R   t   boolR   (    (    s   C:\py\_spe\Parent.pyt   _check_run_debugA  s
    c         C   s4   |  i  i |  |  i  i |  |  i  i |  d  S(   N(   R=  t   redirectStdint   redirectStdoutt   redirectStderr(   R   R  (    (    s   C:\py\_spe\Parent.pyR"   J  s    c         C   s9   | |  _  |  i d t |   |  i i i |  i   d  S(   NR   (   RR   R   t   intR   R   t   check_remember(   R   R  (    (    s   C:\py\_spe\Parent.pyR   O  s    	c         C   sY   y; |  i  i o |  i  i i | |  n |  i | |  Wn |  i | |  n Xd  S(   N(   Rt   R   R   R   (   R   R   R   (    (    s   C:\py\_spe\Parent.pyR   T  s    c         C   s<   t  t i i t d |  d  } | i   } | i   | S(   NR5   t   r(   R   R6   R#   R7   R@   R   R   (   R   R   R   t   content(    (    s   C:\py\_spe\Parent.pyR   ]  s    "
c         C   s=   t  t i i t d |  d  } | i |  | i   d  S(   NR5   R   (   R   R6   R#   R7   R@   R   R   (   R   R   R}  R   (    (    s   C:\py\_spe\Parent.pyt   userSavec  s    "c         C   s   | d j o# |  i  i o |  i  i Sq0 d  Sn t i i |  } x8 |  i  i D]* } t i i | i  | j o | SqO qO Wd  S(   Ns   <source>(   Rt   R   R   RM   R6   R#   t   normcaseR   (   R   R   R   (    (    s   C:\py\_spe\Parent.pyR   i  s     c         C   s(   g  } |  i  i D] } | | i q ~ S(   N(   Rt   R   R   (   R   R   R   (    (    s   C:\py\_spe\Parent.pyt   getFileNamesu  s    c         C   s,   |  i  i o |  i  i i i   Sn d Sd S(   s&   Get raw text of current script window.RC   N(   Rt   R   R   R   R<  (   R   (    (    s   C:\py\_spe\Parent.pyt   getTextx  s    c         C   s8   t  i |  | |  i i |  } | i   } | i   | S(   s;   Show a message with Ok button. (style offers other options)(   R   t   MessageDialogRt   R  R  R  (   R   R   R   R  R  (    (    s   C:\py\_spe\Parent.pyR     s    
c         C   s,   |  i  | d t i t i B} |  i |  S(   s   Show a confirm message (yes,no)R   (   R   R   t   YES_NOt   ICON_QUESTIONt   messageIsOk(   R   R   R  (    (    s   C:\py\_spe\Parent.pyR9    s    c         C   s   | t  i j p | t  i j S(   N(   R   R  t   ID_YES(   R   R  (    (    s   C:\py\_spe\Parent.pyR    s    c         C   sA   |  i  i o d |  i GHn |  i | d t i t i Bt i BS(   s   Show a yes,no or cancel messages    Dialog: Parent: %s.messageCancelR   (   Rt   R   R	  R   R   R  R  t   CANCEL(   R   R   (    (    s   C:\py\_spe\Parent.pyt   messageCancel  s    c         C   s!   |  i  | d t i t i Bd S(   s   Display error message.R   N(   R   R   t   OKt
   ICON_ERROR(   R   R   (    (    s   C:\py\_spe\Parent.pyR    s    c         C   s-   y t  i d t d | f  Wn n Xd  S(   Ns6   mailto:%s?subject=SPE error (automatic report)&body=%sR  (   R  R   R@   (   R   R   (    (    s   C:\py\_spe\Parent.pyR     s    c         C   sX   t  i |  | |  i i |  } | i   t  i j o | i   } n d } | i   | S(   s%   Show entry dialog box for user input.N(	   R   t   TextEntryDialogRt   R  R  R  R   RM   R  (   R   R   R   R  R  (    (    s   C:\py\_spe\Parent.pyR    s     
c         C   sH   d d k  l } t i d j o d | } n | i |  | |  i  d S(   s&   Show multiline scrollable message box.i(   t	   speDialogRD   s   <font size=-2>%s</font>N(   RA  R  R=   R  R  R#   (   R   R   R  (    (    s   C:\py\_spe\Parent.pyt   messageScrolled  s     c         C   s   | o t  i i | d |  } n | d d j o d | } n |  i d  } | t j oB t  i i t  o t  i d t | f  q t i	 | d  n t  i d | | f  d S(	   s   Launch html with webbrowser.R   i    R  s   file://R  s   %s %s &i   N(
   R6   R#   R7   R   R  R   t   FIREFOXR  R  R   (   R   R   R   R  (    (    s   C:\py\_spe\Parent.pyR    s     c         C   si   |  i    y1 t t d d  } |  i i |  | i   Wn' t j
 o } d Gt d GH| GHn Xd  S(   Nt   defaultsUserR   s+   Spe warning: could not save user options in(   t   preferencesUpdateR   R@   R   R   R   R   (   R   t   defaultsR   (    (    s   C:\py\_spe\Parent.pyR     s    
c         C   s  |  i  i o d  Sn |  i |  i i o |  i d   |  i |  i d   |  i  i i   t	 |  i  d  o  |  i  i
 i |  i d   n x! |  i i D] } | i i   q Wd } |  i i |  i d  j o' | d |  i i |  i d  f 7} n |  i i |  i d  j o' | d	 |  i i |  i d  f 7} n |  i d
  i d  d i d  d } | |  i j o< | |  _ | d j o t i t d  qt i |  n | |  i j o) | |  _ | o |  i d |  qn d  S(   Nt   RedirectShellR}  R4   t   ToolTipsForFileTabsRC   t   MdisB   - switch between multiple and single document interface
  (%s>%s)
t	   Shortcutss+   - to use other keyboad shortcuts
  (%s>%s)
t   EncodingR  i    R  s	   <default>t   encodings1   Please restart SPE to apply following changes:
%s(   R   R   R"   Rt   R   R0   Ry  R   R   R   R4   t   EnableToolTipR   R   RH  t   mdiNameR   t	   shortcutsRu  RN   R   t   SetDefaultPyEncodingR@   RS   R   (   R   R   t   restartR  (    (    s   C:\py\_spe\Parent.pyR    s2     $  '')		c         C   sM   |  i  i d | t |  i d d  i d d   | o |  i   n d  S(   Nt   Defaults   %(s   %{s   )ss   }s(   R   R   R   R  R   (   R   R   R  R!  (    (    s   C:\py\_spe\Parent.pyR     s    4 c         C   s+   |  i  i d |  i d d  i d d  S(   NR  s   %{s   %(s   }ss   )s(   R   R   R  (   R   R   (    (    s   C:\py\_spe\Parent.pyR     s    c         C   s   t  |  i i d |   S(   NR  (   R   R   R   (   R   R   (    (    s   C:\py\_spe\Parent.pyR0     s    N(t   t   __name__t
   __module__RM   RJ  t   SIZER   R1   R   R   R   Rj   Rg   Rh   Ri   R   R   R   R   R   R   R   R   R   RG   R   R   t   UNNAMEDR   R   R  R  R  R!  R%  R4  R?  RD  R[  R_  Rb  Re  Rh  Rk  Ro  Rq  Rs  R|  Ry  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.  R0  R_   Rf   Rb   Rd   R   RM  RO  RN  Rd  Rg  R  R  Rs  Rv  R"   R   R   R   R~  R   R  R  R   R  t   ICON_INFORMATIONR   R9  R  R  R  R   R  R  R  R   R  R   R   R0   (    (    (    s   C:\py\_spe\Parent.pyR   <   s   							
	%	*			8							
			/		
										!										*			#			-		"																												
		(   iX  i   (=   t	   _spe.infoR   t   copyR@   t   __doc__R   R6   t   stringR=   R&   t   timeR  R  t   pprintt   _spet   sm.scriptutilsRp   t   sm.wxpt   dialogs.stcStyleEditorRA  R   t   wx.stct   wx.lib.evtmgrR   Rr  R   R   R  R  R  R  R  R  R  R  R  R  R	  R  RJ  R  RU   t   prefixR  R  t   SKINR   t   TITLER  R   R   R   R   t   LINUXt   NB_TOPR   t	   NB_BOTTOMRL  RM  R   R   (    (    (    s   C:\py\_spe\Parent.pys   <module>   sP   
l$		'
	