mò
¬áAc           @   s‹   d  k  l Z d k Z d k Td k Z d d d d d „ Z d d d „ Z d	 „  Z d
 e	 f d „  ƒ  YZ
 e d j o e
 ƒ  i ƒ  n d S(   (   s   divisionN(   t   *i   t   darkslatebluei   c   	      C   sT   t  |  d | d | d | d d d | ƒ} | i d | d | d	 | d
 t t ƒ d  S(   Nt   textt   commandt   bgt   fgt   whitet   padxt   rowt   columnt
   columnspant   sticky(   t   Buttont   rootR   t   comt   clrt   padt   wt   gridR   t   colt   spant   Et   W(	   R   R   R   R   R   R   R   R   R   (    (    t'   /home/fenn/3d/cadvas-0.2.2/tkrpncalc.pyt   but   s    *i
   c         C   s8   t  |  d | d t ƒ} | i d | d | d | ƒ d  S(   Nt   textvariablet   reliefR   R	   R
   (	   t   EntryR   t   vart   SUNKENt   eR   R   R   R   (   R   R   R   R   R   R   (    (    R   t   ent"   s    c         C   s   d |  S(   s4   Convert float to string with 12 significant figures.s   %1.12fN(   t   f(   R    (    (    R   t   f2s&   s     t
   Calculatorc           B   sÎ   t  Z d  Z d Z e Z e Z e d „ Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d d d	 „ Z d
 „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   se   RPN (Reverse Polish Notation) calculator styled after the one
    used in CoCreate SolidDesigner CAD.t    c      
      s«  t  i ˆ  ƒ | ˆ  _ ˆ  i d ƒ ˆ  i d ˆ  i ƒ | o ˆ  i | ƒ n t ˆ  d d d d ‡  d † d d ƒt ˆ  d d	 d d ‡  d
 † d d ƒt ˆ  d d d d ‡  d † d d ƒt ˆ  d d d d ‡  d † d d ƒt	 ƒ  ˆ  _
 t	 ƒ  ˆ  _ t	 ƒ  ˆ  _ t	 ƒ  ˆ  _ t ˆ  ˆ  i
 d ƒ t ˆ  ˆ  i d	 ƒ t ˆ  ˆ  i d ƒ t ˆ  ˆ  i d ƒ t ˆ  d d d ˆ  i d d d d ƒt ˆ  d d d ˆ  i d d d d ƒt ˆ  d d d ˆ  i d d ƒt ˆ  d d d ˆ  i d d ƒt ˆ  d d d d ‡  d † d d ƒt ˆ  d d d d ‡  d † d d ƒt ˆ  d  d d d  ‡  d! † d d ƒt ˆ  d" d d# d" ‡  d$ † ƒ t ˆ  d% d d ˆ  i d d ƒt ˆ  d& d d ˆ  i d d ƒt ˆ  d' d# d d' ‡  d( † d d ƒt ˆ  d) d# d d) ‡  d* † d d ƒt ˆ  d+ d# d d+ ‡  d, † d d ƒt ˆ  d- d# d# d- ‡  d. † ƒ t ˆ  d/ d# d ˆ  i d d0 ƒt ˆ  d1 d# d ˆ  i d d d2 d ƒt ˆ  d3 d4 d d3 ‡  d5 † d d ƒt ˆ  d6 d4 d d6 ‡  d7 † d d ƒt ˆ  d8 d4 d d8 ‡  d9 † d d ƒt ˆ  d: d4 d# d: ‡  d; † ƒ t ˆ  d< d4 d ˆ  i d d0 ƒt ˆ  d= d4 d ˆ  i d d0 ƒt ˆ  d> d d d> ‡  d? † d d d2 d ƒt ˆ  d@ d d d@ ‡  dA † ƒ t ˆ  dB d d dB ‡  dC † ƒ t ˆ  dD d d# dE ‡  dF † d2 d ƒt ˆ  dG d d ˆ  i d d d dH ƒt ˆ  dI dJ d dK ‡  dL † d d d dH ƒt ˆ  dM dJ d dN ‡  dO † d d d dH ƒt ˆ  dP dJ d# dQ ‡  dR † d d d dH ƒt ˆ  dS dJ dJ dT ‡  dU † d d d dH ƒt ˆ  dV d d dW ‡  dX † d d d dH ƒt ˆ  dY d d dZ ‡  d[ † d d d dH ƒt ˆ  d\ d d# d] ‡  d^ † d d d dH ƒt ˆ  d_ d dJ d d d dH ƒt ˆ  d` da d db ‡  dc † d d d d ƒt ˆ  dd da d dd ‡  de † d d d d ƒt ˆ  df da d# dg ‡  dh † d d d d ƒt ˆ  di da dJ dj ‡  dk † d d d d ƒt ˆ  dl dm d dn ‡  do † d d d d ƒt ˆ  dp dm d dq ‡  dr † d d d d ƒt ˆ  ds dm d# dt ‡  du † d d d d ƒt ˆ  dv dm dJ dw ‡  dx † d d d d ƒd  S(y   Ns   RPN Calct   WM_DELETE_WINDOWt   ti    c            s   ˆ  i |  ƒ S(   N(   t   selft   prt   r(   R(   (   R&   (    R   t   <lambda>9   s    R   t   dimgrayt   zi   c            s   ˆ  i |  ƒ S(   N(   R&   R'   R(   (   R(   (   R&   (    R   R)   :   s    t   yi   c            s   ˆ  i |  ƒ S(   N(   R&   R'   R(   (   R(   (   R&   (    R   R)   ;   s    t   xi   c            s   ˆ  i |  ƒ S(   N(   R&   R'   R(   (   R(   (   R&   (    R   R)   <   s    s   mm->ini   R   s   in->mmt   Stoi   t	   darkgreent   Rcli
   t   7i   c            s   ˆ  i |  ƒ S(   N(   R&   t   keyint   c(   R3   (   R&   (    R   R)   K   s    t	   steelbluet   8c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   L   s    t   9c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   M   s    t   +i   c            s   ˆ  i |  ƒ S(   N(   R&   t   calct   op(   R9   (   R&   (    R   R)   N   s    t   Rupt   Rdnt   4c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   Q   s    t   5c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   R   s    t   6c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   S   s    t   -c            s   ˆ  i |  ƒ S(   N(   R&   R8   R9   (   R9   (   R&   (    R   R)   T   s    s   <-t   darkreds   x<>yR   t   1i   c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   W   s    t   2c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   X   s    t   3c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   Y   s    R    c            s   ˆ  i |  ƒ S(   N(   R&   R8   R9   (   R9   (   R&   (    R   R)   Z   s    t   Clxt   Clrt   0c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   ]   s    t   .c            s   ˆ  i |  ƒ S(   N(   R&   R2   R3   (   R3   (   R&   (    R   R)   ^   s    s   +/-c            s   ˆ  i |  ƒ S(   N(   R&   R8   R9   (   R9   (   R&   (    R   R)   _   s    s    / t   /c            s   ˆ  i |  ƒ S(   N(   R&   R8   R3   (   R3   (   R&   (    R   R)   `   s    t   ENTERt   darkgoldenrodt   Sini	   s   math.sin(x)c            s   ˆ  i |  d d ƒS(   Nt   in_cnvrti   (   R&   t   funcR9   (   R9   (   R&   (    R   R)   b   s    t   Coss   math.cos(x)c            s   ˆ  i |  d d ƒS(   NRL   i   (   R&   RM   R9   (   R9   (   R&   (    R   R)   d   s    t   Tans   math.tan(x)c            s   ˆ  i |  d d ƒS(   NRL   i   (   R&   RM   R9   (   R9   (   R&   (    R   R)   f   s    t   Pis   math.pic            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   h   s    t   ASins   math.asin(x)c            s   ˆ  i |  d d ƒS(   Nt	   out_cnvrti   (   R&   RM   R9   (   R9   (   R&   (    R   R)   i   s    t   ACoss   math.acos(x)c            s   ˆ  i |  d d ƒS(   NRR   i   (   R&   RM   R9   (   R9   (   R&   (    R   R)   k   s    t   ATans   math.atan(x)c            s   ˆ  i |  d d ƒS(   NRR   i   (   R&   RM   R9   (   R9   (   R&   (    R   R)   m   s    R#   s   x^2i   s   x**2c            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   p   s    s   1/xc            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   q   s    s   e^xs	   math.e**xc            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   r   s    s   10^xs   10**xc            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   s   s    t   Sqrti   s   math.sqrt(x)c            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   t   s    s   y^xs   y**xc            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   u   s    t   lns   math.log(x)c            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   v   s    t   logs   math.log10(x)c            s   ˆ  i |  ƒ S(   N(   R&   RM   R9   (   R9   (   R&   (    R   R)   w   s    (   t   Toplevelt   __init__R&   t   callert   titlet   protocolt   quitt	   transientR   t	   StringVart   tdisplayt   zdisplayt   ydisplayt   xdisplayR   t   mm2int   in2mmt   storext   recallxt   rotateupt   rotatednt   trimxt   swapxyt   clearxt   clearallt   enter(   R&   RZ   (    (   R&   R   RY   0   s†    	%%%%%%%%%%%%%%%%+%%++++++++c         C   s(   |  i o d  |  i _ n |  i ƒ  d  S(   N(   R&   RZ   t   Nonet
   calculatort   destroy(   R&   (    (    R   R]   z   s    
c         C   sD   t  d | d ƒ i d ƒ } |  i i | ƒ t |  _ t	 |  _
 d S(   s!   Send value in register to CADvas.s   self.s   display.get()t   'N(   t   evalt   valt   stript	   str_valueR&   RZ   t
   enterfloatt   Falset   keipt   Truet   needrup(   R&   Rt   Rv   (    (    R   R'      s
     	c         C   sm   |  i o! |  i i |  i i ƒ  | ƒ n? t |  _ |  i o |  i d d ƒ n |  i	 ƒ  |  i
 | ƒ d  S(   Nt   loopi    (   R&   Ry   Rc   t   sett   getR3   Rz   R{   Rh   Rl   R2   (   R&   R3   (    (    R   R2   ‡   s    
!	

c         C   sa   |  i i |  i i ƒ  ƒ |  i i |  i i ƒ  ƒ |  i i |  i i ƒ  ƒ t |  _ t |  _	 d  S(   N(
   R&   R`   R}   Ra   R~   Rb   Rc   Rx   Ry   R{   (   R&   (    (    R   Rn   ‘   s
    	c         C   sÒ   y´ | d j o( |  i i t d |  i i ƒ  ƒ ƒ nj t |  i i ƒ  | |  i i ƒ  ƒ } |  i i | ƒ |  i i |  i i ƒ  ƒ |  i i |  i	 i ƒ  ƒ t
 |  _ t |  _ Wn |  i i d ƒ n Xd S(   sD   Arithmetic calculations between x and y registers, then rotate down.s   +/-R?   t   ERRORN(   R9   R&   Rc   R}   Rs   R~   Rb   R-   Ra   R`   Rx   Ry   Rz   R{   (   R&   R9   R-   (    (    R   R8   ˜   s     ('	i    c         C   sÂ   y t  |  i i ƒ  ƒ } Wn d } n Xy t  |  i i ƒ  ƒ } Wn d } n X| o | t i	 d } n t
 | ƒ } | o | d t i	 } n |  i i t | ƒ ƒ t |  _ t |  _ d S(   sé   Evaluate function op then put result in x-register, don't rotate stack.
        if in_cnvrt: convert input value of x-register from degrees to radians.
        if out_cnvrt: convert output value of x-register from radians to degrees.i    i´   N(   t   floatR&   Rc   R~   R-   Rb   R,   RL   t   matht   piRs   R9   t   resultRR   R}   R!   Rx   Ry   Rz   R{   (   R&   R9   RL   RR   Rƒ   R,   R-   (    (    R   RM   ¨   s"     

	c         C   sN   |  i i ƒ  o: |  i i t |  i i ƒ  d ƒ ƒ t |  _ t |  _ n d  S(   Ns   /25.4(	   R&   Rc   R~   R}   Rs   Rx   Ry   Rz   R{   (   R&   (    (    R   Rd   ½   s    $	c         C   sN   |  i i ƒ  o: |  i i t |  i i ƒ  d ƒ ƒ t |  _ t |  _ n d  S(   Ns   *25.4(	   R&   Rc   R~   R}   Rs   Rx   Ry   Rz   R{   (   R&   (    (    R   Re   Ã   s    $	c         C   s(   |  i i ƒ  |  _ t |  _ t |  _ d  S(   N(   R&   Rc   R~   t   memRx   Ry   Rz   R{   (   R&   (    (    R   Rf   É   s    	c         C   s3   |  i ƒ  |  i i |  i ƒ t |  _ t |  _ d  S(   N(	   R&   Rh   Rc   R}   R„   Rx   Ry   Rz   R{   (   R&   (    (    R   Rg   Î   s    
	i   c         C   sy   |  i i ƒ  } |  i i |  i i ƒ  ƒ |  i i |  i i ƒ  ƒ |  i i |  i i ƒ  ƒ | o |  i i | ƒ n d  S(   N(	   R&   R`   R~   R-   R}   Ra   Rb   Rc   R|   (   R&   R|   R-   (    (    R   Rh   Ô   s    c         C   sn   |  i i ƒ  } |  i i |  i i ƒ  ƒ |  i i |  i i ƒ  ƒ |  i i |  i i ƒ  ƒ |  i i | ƒ d  S(   N(   R&   Rc   R~   R-   R}   Rb   Ra   R`   (   R&   R-   (    (    R   Ri   Ü   s
    c         C   s!   |  i i |  i i ƒ  d  ƒ d  S(   Niÿÿÿÿ(   R&   Rc   R}   R~   (   R&   (    (    R   Rj   ã   s    c         C   sB   |  i i ƒ  } |  i i ƒ  } |  i i | ƒ |  i i | ƒ d  S(   N(   R&   Rc   R~   R-   Rb   R,   R}   (   R&   R,   R-   (    (    R   Rk   æ   s    c         C   s   |  i i d ƒ d  S(   NR#   (   R&   Rc   R}   (   R&   (    (    R   Rl   ì   s    c         C   sD   |  i i d ƒ |  i i d ƒ |  i i d ƒ |  i i d ƒ d  S(   NR#   (   R&   Rc   R}   Rb   Ra   R`   (   R&   (    (    R   Rm   ï   s    c         C   sE   |  i o |  i d d ƒ n |  i i | ƒ t |  _ t |  _ d  S(   NR|   i    (	   R&   R{   Rh   Rc   R}   t   valueRx   Ry   Rz   (   R&   R…   (    (    R   t   putxõ   s
    
	(   t   __name__t
   __module__t   __doc__R„   Rx   Ry   R{   Ro   RY   R]   R'   R2   Rn   R8   RM   Rd   Re   Rf   Rg   Rh   Ri   Rj   Rk   Rl   Rm   R†   (    (    (    R   R"   *   s,    J			
											t   __main__(   t
   __future__t   divisiont   syst   TkinterR   Ro   R   R   R!   RX   R"   R‡   t   mainloop(   RŒ   R"   R!   R   R   R   R   (    (    R   t   ?   s   			Ò
