
&8Ic           @   s   d  d k  Td  d k Td  d k Td  d k l Z l Z d  d k Td  d k l Z l	 Z	 l
 Z
 l Z l Z l Z l Z l Z d  d k l Z d  d k Z d f  d     YZ e d j o e   n d S(	   i(   t   *(   t   atoft   split(   t   patht   systemt   getcwdt   getuidt   environt   getenvt   putenvt   getlogin(   t   argvNt   Effectc           B   s  e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d+ d  Z d+ d  Z d+ d  Z d+ d  Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d    Z# d!   Z$ d"   Z% d#   Z& d$   Z' d%   Z( d&   Z) d'   Z* d(   Z+ d)   Z, d*   Z- RS(,   c      
   C   so  d  d  d  d  d  d  d  d  d  d  g
 |  _ g  |  _ t d d  |  _ t d |   |  _ |  i i   i d d  |  i i   i	 d d  |  i i
 |   |  i i |   |  i i |   d |  _ d d d g |  _ |  i d } | | | | g |  _ d  |  _ d	 |  _ d
 |  _ d  |  _ t t  d
 j o |  i t d
  n |  i   d |  _ |  i   |  i i   d  S(   Ni    ic   t   appi  i  g      (@g      @g      ?s   bd_none.radi   t    (   t   Nonet	   lightListt
   objectListt   ranget	   objectIdst	   EffectGUIt   egt   _roott   maxsizet   minsizet   addEffectTextListenert   addEffectCanvasListenert   addEffectMenuListenert   sphereRadiust   aimPointt   worldt   selectedObjectt   bft   isSavedt   filenamet   lenR   t   initt   newt	   rviewargst   drawRingAndTargett   mainloop(   t   selft   r(    (    s   bin/effect.pyt   __init__   s0    						
	
c         C   sB   |  i    } t |  |  i i d | d  } |  i i | |  d  S(   Ns	   WhMan-#%dt   white(   t   getNextObjectIdt   ManWtR   t   canvasR   t   insert(   R)   t   it   a(    (    s   bin/effect.pyt   addManWt6   s    c         C   sB   |  i    } t |  |  i i d | d  } |  i i | |  d  S(   Ns   WhWoman-#%dR,   (   R-   t   WomanWtR   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt
   addWomanWt;   s    c         C   sB   |  i    } t |  |  i i d | d  } |  i i | |  d  S(   Ns	   BkMan-#%dt   black(   R-   t   ManBkR   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt   addManBk@   s    c         C   sB   |  i    } t |  |  i i d | d  } |  i i | |  d  S(   Ns   BkWomann-#%dR6   (   R-   t   WomanBkR   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt
   addWomanBkE   s    c         C   s?   |  i    } t |  |  i i d |  } |  i i | |  d  S(   Ns
   Chair1-#%d(   R-   t   Chair1R   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt	   addChair1J   s    c         C   s?   |  i    } t |  |  i i d |  } |  i i | |  d  S(   Ns
   Chair2-#%d(   R-   t   Chair2R   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt	   addChair2O   s    c         C   s?   |  i    } t |  |  i i d |  } |  i i | |  d  S(   Ns	   Table-#%d(   R-   t   TableR   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt   addTableT   s    c         C   s?   |  i    } t |  |  i i d |  } |  i i | |  d  S(   Ns	   Wall3-#%d(   R-   t   Wall3R   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt   addWall3Y   s    c         C   s?   |  i    } t |  |  i i d |  } |  i i | |  d  S(   Ns
   Wall12-#%d(   R-   t   Wall12R   R/   R   R0   (   R)   R1   R2   (    (    s   bin/effect.pyt	   addWall12^   s    c         C   s   | |  _  |  i  d j o
 d } nO |  i  d j o
 d } n5 |  i  d j o
 d } n |  i  d j o
 d } n |  i i i d	 |  d  S(
   Ns   bd_none.radR   s   bd_skyn.radt   Nights   bd_skyd.radt   Days   bd_scene.radt   Scenes   
Backdrop set: %s(   R    R   t   textt   disp(   R)   t   backdropR    (    (    s   bin/effect.pyt   setBackdropc   s    	



c         C   sM   xF t  t |  i   D]/ } |  i | | j o d |  i | <| Sq q Wd  S(   Ni(   R   R#   R   (   R)   R1   (    (    s   bin/effect.pyR-   o   s
     c   	      C   s   t  |  i i d  } t  |  i i d  } | | } | | } |  i d | |  i d |  i d } |  i d | |  i d |  i d } | | f S(   Nt   widtht   heighti    i   i   i   (   R   R   R/   R   (	   R)   t   xt   yt   cwt   cht   txt   tyt   ut   v(    (    s   bin/effect.pyt   toWorldv   s    

''c   	      C   s   t  |  i i d  } t  |  i i d  } | |  i d |  i d |  i d } | |  i d |  i d |  i d } t |  | } t |  | } | | f S(   NRL   RM   i    i   i   i   (   R   R   R/   R   t   float(	   R)   RT   RU   RP   RQ   t   tut   tvRN   RO   (    (    s   bin/effect.pyt   toCanvas   s    ''c         C   s   |  i  S(   N(   R   (   R)   (    (    s   bin/effect.pyt   getSphereRadius   s    c         C   s   |  i  S(   N(   R   (   R)   (    (    s   bin/effect.pyt   getAimPoint   s    c         C   s   |  i  i } |  i d d  \ } } |  i |  i |  i  \ } } | | | | } } t | | | | | | | | | d d |  _ t | | d | d | d | d d d |  _ d  S(   Ni    t   outlineR6   i   t   fill(   R   R/   RZ   R   t   Ovalt   spheret   target(   R)   t   ct   cxt   cyt   rxt   ry(    (    s   bin/effect.pyR'      s    %%c         C   s  | d j o | i  i t  p |  i i d   } | o |  i | i | i  \ } } t	 | | | |  |  i
 j  ot |  i i d   } |  i i   } t |  | | i | i |  }	 |	 |  i | <d |  _ |  i i i d | d  q q qn| d j oS xvt t |  i   D]5 }
 |  i |
 i | |  o |  i |
 |  _ PqqWn'| d j o| i  i t  o| i t  } x t t |  i   D] }
 d  |  i |
 j o | d |  i |
 i j p | d |  i |
 i j o t |  i d d d d	 d
 d d d d d } | i d j o |  i i |
 i   qo| i d j o |  i i |
 i   qoqsqqWqn d  S(   Ni   i    s   
Light %d: Addedi   i   t   titles   Light editorRH   s   Edit which attribute?t   bitmapt   questiont   defaultt   stringst   Gelt
   Photometryt   Cancel(   Rl   Rm   Rn   (   t   widgett   find_withtagt   CURRENTR   t   countR   RV   RN   RO   t   sqrtR   t   indexR   t   getNextAvailableFadert   LightR!   RH   RI   R   R#   R   t   isInsideR   t   idt   textIdt   Dialogt   numt   faderst   gelButtonPressedt   photoButtonPressed(   R)   R/   t   buttont   eventRr   RT   RU   Rt   t   fadert   lR1   t   currentt   ans(    (    s   bin/effect.pyt
   mousePress   sN    "	+    	c         C   s4  | i  i t  o| i t  } x t t |  i   D]w } d  |  i | j o] | d |  i | i j p | d |  i | i j o# | d j o |  i	 |  Pq q q8 q8 Wxz t t |  i
   D]_ } | d |  i
 | i j p | d |  i
 | i j o# | d j o |  i |  Pq(q q Wn d  S(   Ni    i   (   Ro   Rp   Rq   R   R#   R   R   Rx   Ry   t   deleteLightR   t   deleteObject(   R)   R/   R   R   R   R1   (    (    s   bin/effect.pyt   doubleMousePress   s"      c         C   s   | d j o | i  i t  o x t t |  i   D]l } d  |  i | j o |  i | i | |  n x4 t t |  i   D] } |  i | i | |  q Wq6 Wq n5 | d j o' |  i	 d  j o |  i	 i
 | |  n d  S(   Ni   i   (   Ro   Rp   Rq   R   R#   R   R   t   moveR   R   t   rotate(   R)   R/   R   R   R1   (    (    s   bin/effect.pyt   mouseDragged   s      'c         C   s   xL t  t |  i   D]5 } d  |  i | j o |  i | i | |  q q Wx4 t  t |  i   D] } |  i | i | |  qe W|  i o  |  i i | |  d  |  _ n d  S(   N(   R   R#   R   R   t   releaseR   R   (   R)   R/   R   R1   (    (    s   bin/effect.pyt   mouseRelease   s      
c         C   s   t  |  i |  i |  } d  S(   N(   t   LightEditorR   R   (   R)   R/   R   Rt   t   le(    (    s   bin/effect.pyt	   editLight   s    c         C   sO   |  i  | } | i   d  |  i  | <~ d |  _ |  i i i d | d  d  S(   Ni    s   
Light %d: Deletedi   (   R   t   deleteR   R!   R   RH   RI   (   R)   Rt   t   light(    (    s   bin/effect.pyR      s    
	c         C   sd   |  i  | } |  i  i |  | |  i | <| i   | i } ~ d |  _ |  i i i d |  d  S(   Ni    s   
Object %s: Deleted(	   R   t   removeR   R   t   nameR!   R   RH   RI   (   R)   Rt   t   objectR   (    (    s   bin/effect.pyR     s    
		c         C   ss   |  i  i i d |  } | d j o
 | } n t |  } d | j o
 d j n o | Sn |  i |  d  S(   Ns'   provide vertical angle {-30, 90} [%f] >R   g      >g     V@(   R   RH   t   askR   t   getNewVangle(   R)   t   vanglet   anglet   newangle(    (    s   bin/effect.pyt   getNewVAngle  s    c         C   ss   |  i  i i d |  } | d j o
 | } n t |  } d | j o
 d j n o | Sn |  i t  d  S(   Ns(   provide horizontal angle {0, 360} [%f] >R   g        g     v@(   R   RH   R   R   t   getNewHangleR   (   R)   t   hangleR   R   (    (    s   bin/effect.pyt   getNewHAngle  s    
c         C   ss   |  i  i i d |  } | d j o
 | } n t |  } d | j o
 d j n o | Sn |  i |  d  S(   Ns   provide channel {1,10} [%d] >R   i   i
   (   R   RH   R   t   atoit   getNewChannel(   R)   t   channelRQ   t
   newchannel(    (    s   bin/effect.pyR   &  s    
c         C   s   t  |  i d d d d d d d d d	 d } | i d j o* |  i   |  i d j o d Sq d Sn' | i d j o |  i   d Sn d Sd  S(   NRg   s
   Save file?RH   s   Session has not been saved.Rh   Ri   Rj   i   Rk   t   Savet   DiscardRn   i    (   s   SaveR   s   Cancel(   Rz   R   R{   t   saveR!   t   discard(   R)   R   (    (    s   bin/effect.pyt	   checkWork2  s    	

c         C   s   |  i  p |  i   p d  Sq# n xB t t |  i   D]+ } |  i | d  j o |  i |  q9 q9 Wx( t |  i  d j o |  i d  qk W|  i	 i
 i d  d |  _  d  S(   Ni    s   
New session started.i   (   R!   R   R   R#   R   R   R   R   R   R   RH   RI   (   R)   R1   (    (    s   bin/effect.pyR%   E  s    
 c   	      C   s  | p d  Snt  | d  } | i   } t |  } | d d j p |  i i i d d  d  SnA| i   } | d j o t |  d } n x| d j o| d j oS |  i i d   } |  i i	   } t
 |  |  i i d | d	 | } | |  i | <n| d
 j o) |  i i t |  |  i i d	 |  n| d j o) |  i i t |  |  i i d	 |  n| d j o) |  i i t |  |  i i d	 |  nj| d j o) |  i i t |  |  i i d	 |  n4| d j o) |  i i t |  |  i i d	 |  n | d j o) |  i i t |  |  i i d	 |  n | d j o) |  i i t |  |  i i d	 |  n | d j o) |  i i t |  |  i i d	 |  n\ | d j o) |  i i t |  |  i i d	 |  n& |  i i i d d  |  i   d  S| i   } | d j o t |  d } q q W| |  _ t | d  t t | d   d } |  i i i d |  |  i i i d |  d |  _ d  S(   NR*   i    s   #Effects   
*** Error: s   Not valid `effect' file...
R   R   R   t   fdR.   R7   R4   R9   R;   R=   R?   RA   RC   t   /i   s   
Opened file `%s'.s
   Effect: %s(   t   opent   readlineR   R   RH   RI   R   Rt   R   Ru   Rv   R/   R   t   appendR.   R7   R4   R9   R;   R=   R?   RA   RC   R%   R"   R#   t   masterRg   R!   (	   R)   t   filet   fR   t   firstRt   RQ   R   R   (    (    s   bin/effect.pyR$   T  s    
	&c   
   	   C   s^  |  i  p |  i   p d  Sq# n t i d d d g d t    } | p d  Snxm t t |  i   D]V } |  i | d  j o< |  i	 |  x, t |  i
  d j o |  i d  q Wqi qi Wt | d  } | i   } t |  } | d d	 j p |  i i i d
 d  d  SnA| i   } | d j o t |  d } n x| d j o| d j oS |  i i d   } |  i i   } t |  |  i i d | d | } | |  i | <n| d j o) |  i
 i t |  |  i i d |  n| d j o) |  i
 i t |  |  i i d |  n| d j o) |  i
 i t |  |  i i d |  nj| d j o) |  i
 i t |  |  i i d |  n4| d j o) |  i
 i t |  |  i i d |  n | d j o) |  i
 i t |  |  i i d |  n | d j o) |  i
 i t |  |  i i d |  n | d j o) |  i
 i t |  |  i i d |  n\ | d j o) |  i
 i t |  |  i i d |  n& |  i i i d
 d  |  i    d  S| i   } | d j o t |  d } qJqJW| |  _! t | d  t t | d   d }	 |  i i i d |	  |  i i" i# d |	  d |  _  d  S(   Nt	   filetypess   Effect Filess   .efs	   All FilesR    t
   initialdiri    R*   s   #Effects   
*** Error: s   Not valid `effect' file...
R   R   R   R   R.   R7   R4   R9   R;   R=   R?   RA   RC   R   i   s   
Opened file `%s'.s
   Effect: %s(   s   Effect Filess   .ef(   s	   All FilesR    ($   R!   R   t   tkFileDialogt   askopenfilenameR   R   R#   R   R   R   R   R   R   R   R   R   RH   RI   Rt   Ru   Rv   R/   R   R.   R7   R4   R9   R;   R=   R?   RA   RC   R%   R"   R   Rg   (
   R)   R   R1   R   R   R   Rt   RQ   R   R   (    (    s   bin/effect.pyR     s    
		 
	&c         C   s8   |  i  o d  Sn# |  i p |  i   n |  i   d  S(   N(   R!   R"   t   saveAsR   (   R)   (    (    s   bin/effect.pyR     s
    

c      	   C   s   |  i  o3 |  i  } t | d  t t | d   d } n d } t i d d d d d g d
 d t   d d |  } | p d  Sn | |  _  |  i   d  S(   NR   i   s   .eft   defaultextensionR   s   Effect Filess   *.efs	   All FilesR    R   s   /Users/t   initialfile(   s   Effect Filess   *.ef(   s	   All FilesR    (   R"   R   R#   R   t   asksaveasfilenameR
   R   (   R)   R   t   initfile(    (    s   bin/effect.pyR     s    
	*			c      	   C   s  t  |  i d  } | i d |  i  xC t t |  i   D], } |  i | o |  i | i |  q< q< Wx1 t t |  i   D] } |  i | i |  q W| i   d |  _	 |  i } t
 | d  t t
 | d   d } |  i i i d |  |  i i i d |  d  S(   Nt   ws   #Effect file %s 
i   R   s   
Saved file `%s'.s
   Effect: %s(   R   R"   t   writeR   R#   R   R   R   t   closeR!   R   R   RH   RI   R   Rg   (   R)   R   R1   R   R   (    (    s   bin/effect.pyR   &  s      
		&c         C   s   xB t  t |  i   D]+ } |  i | d  j o |  i |  q q Wx( t |  i  d j o |  i d  qH Wd  |  _ d |  _ d  S(   Ni    i   (	   R   R#   R   R   R   R   R   R"   R!   (   R)   R1   (    (    s   bin/effect.pyR   5  s     	c         C   s   |  i  p |  i   p d  Sq# n t |  i d d d d d d d d d	 d } | i d j o |  i   t i |  i  n d  S(   NRg   s   Really quit?RH   s   Do you really want to quit?Rh   Ri   Rj   i   Rk   t   Yest   Noi    (   R   R   (   R!   R   Rz   R   R{   t   cleanUpt   Framet   quit(   R)   R   (    (    s   bin/effect.pyR   @  s    
	
c         C   sE   d d  k  } | i d d d |  i } | d  j o | |  _ n d  S(   Nis   Edit renders   render arguments:t   initialvalue(   t   tkSimpleDialogt	   askstringR&   R   (   R)   R   t   com(    (    s   bin/effect.pyt   editPreviewO  s
    c      
   C   s  t  i d t    p t d t    n |  i d  j o d t   } d } nZ t |  i d  } | t |  d } d t   t | d  d	 f } t | d  d	 } |  i d
 |  } |  i	 d |  } |  i
 d |  } |  i d |  }	 t d |	 | | t d d |  i | f  | d	 j o t d | |  i | f  n{| d j oq t i d d d d* d+ g d d t   d d | d  }
 t d | |  i | |
 f  |  i i i d |
  n | d j oq t i d d d d, d- g d d t   d d | d  }
 t d" | |  i | |
 f  |  i i i d# |
  n | d$ j oq t i d d% d d. d/ g d d t   d d | d%  }
 t d( | |  i | |
 f  |  i i i d) |
  n d  S(0   Ns   /tmp/effect.%ds   mkdir /tmp/effect.%ds   /tmp/effect.%d/0000t   0000R   i   s   /tmp/effect.%d/%st   .i    s   %s.vfs	   %sSet.rads   %sLights.rads   %sObjects.rads   oconv -w %s %s %s %s > %s.octt
   EFFECTHOMEs   /objects/%ss2   rview -vf %s -pe .2 -av .005 .005 .005 %s %s.oct &R   s   -s.hdrR   s   Small Pic Filess   *-s.hdrs	   All FilesR    R   s   /Users/R   si   rpict -vf %s -vh 45 -vv 45 -av .005 .005 .005 -x 800 -y 800 %s %s.oct | pfilt -1 -e .3 -x /2 -y /2 > %s &s"   
Rendering small version into `%s'i   s   -m.hdrs   Medium Pic Filess   *-m.hdrsw   rpict -vf %s -vh 45 -vv 45 -av .005 .005 .005 -ab 1 -x 1000 -y 1000 %s %s.oct | pfilt -1 -e .3 -r .6 -x /2 -y /2 > %s &s#   
Rendering medium version into `%s'i   s   -l.hdrs   Large Pic Filess   *-l.hdrs   rpict -vf %s -vh 45 -vv 45 -av .005 .005 .005 -ab 1 -x 2000 -y 2000 -ps 6 -pt .08 -aw 1024 -aa .2 -ad 400 -as 64 -lr 6 -lw .002 %s %s.oct | pfilt -1 -e .3 -r .6 -x /2 -y /2 > %s &s"   
Rendering large version into `%s'(   s   Small Pic Filess   *-s.hdr(   s	   All FilesR    (   s   Medium Pic Filess   *-m.hdr(   s	   All FilesR    (   s   Large Pic Filess   *-l.hdr(   s	   All FilesR    (   R   t   existsR   R   R"   R   R   R#   t   createViewFilet   createSetFilet   createLightFilet   createObjectFileR   R    R&   R   R   R
   R   RH   RI   (   R)   t	   situationR   R   t   listt   blaht   vft   sft   lft   oft   pf(    (    s   bin/effect.pyt   renderW  sV    
 ,						c         C   sH   d t    } d | | | | f } t |  d t    } t |  d  S(   Ns   /tmp/effect.%d/s$   rm -f %s*.vf %s*.oct %s*.rad %s*.dats   rmdir /tmp/effect.%d(   R   R   (   R)   R   t   rmfiles(    (    s   bin/effect.pyR     s    
c         C   s4   t  | d  } d d } | i |  | i   | S(   NR   s+   rview -vtv -vp 0 -10 4 -vd 0 1 0 -vu 0 0 1 s%   -vh 45 -vv 45 -vo 0 -va 0 -vs 0 -vl 0(   R   R   R   (   R)   R"   R   t   output(    (    s   bin/effect.pyR     s    
c         C   sD   t  | d  } d d d d d d } | i |  | i   | S(   NR   s   void plastic setcolor 
s   0
0
s   5 0.5 0.5 0.5 0 0

s   setcolor ring floor
s   8 0 0 0 0 0 1 0 20
(   R   R   R   (   R)   R"   R   R   (    (    s   bin/effect.pyR     s    
c         C   s   d } x; t  t |  i   D]$ } |  i | d  j o
 d } q q W| p d Sn t | d  } xI t  t |  i   D]2 } |  i | d  j o |  i | i |  qx qx W| i   | S(   Ni    i   R   R   (   R   R#   R   R   R   t   radoutR   (   R)   R"   t   flagR1   R   (    (    s   bin/effect.pyR     s      
c         C   si   t  |  i  p d Sn t | d  } x1 t t  |  i   D] } |  i | i |  q= W| i   | S(   NR   R   (   R#   R   R   R   R   R   (   R)   R"   R   R1   (    (    s   bin/effect.pyR     s     
N(.   t   __name__t
   __module__R+   R3   R5   R8   R:   R<   R>   R@   RB   RD   RK   R-   RV   RZ   R[   R\   R'   R   R   R   R   R   R   R   R   R   R   R   R   R%   R$   R   R   R   R   R   R   R   R   R   R   R   R   R   (    (    (    s   bin/effect.pyR      sV   	(																		(											J	`		 					8				t   __main__(   t	   effectGUIR   R   t   stringR   R   t   Canvast   osR   R   R   R   R   R   R	   R
   t   sysR   R   R   R   (    (    (    s   bin/effect.pys   <module>   s   



:  