
    ը	f3                         d Z ddlmZ 	 ddlmc mZ ddlm	Z	 ddl
mZmZ ddlmZ ddlmZ ddlmZ  G d	 d
      Zd Zedk(  r e        yy# e$ r	 ddlmZ Y Hw xY w)aY  
@package animation.nviztask

@brief Conversion from workspace file to m.nviz.image command

Classes:
 - nviztask::NvizTask

(C) 2013 by the GRASS Development Team

This program is free software under the GNU General Public License
(>=v2). Read the file COPYING that comes with GRASS for details.

@author Anna Petrasova <kratochanna gmail.com>
    )print_functionN)ProcessWorkspaceFile)
RunCommand
GException)GetLayerNameFromCmd)task)UserSettingsc                   h    e 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 Zd Zd Zd Zd Zy)NvizTaskc                 .    d | _         d | _        i | _        y N)r   filenameregionselfs    3/usr/lib/grass83/gui/wxpython/animation/nviztask.py__init__zNvizTask.__init__    s    	    c                    t        j                  d      | _        || _        	 t	        t        j                  | j                              }|j                  s!t        t        d      | j                  z        | j                  |       | j                  |j                         | j                  |j                         y # t        $ r t        t        d      |z        w xY w)Nzm.nviz.imagezOReading workspace file <%s> failed.
Invalid file, unable to parse XML document.z.No 3d view information in workspace file <%s>.)gtask	grassTaskr   r   r   etreeparse	Exceptionr   _
nviz_state
_getExtent_processState_processLayerslayers)r   r   gxwXmls      r   LoadzNvizTask.Load%   s    OON3	 		)%++dmm*DEF   BCdmmS  	6,,-FMM*+  	B 	 	s   (C   !C!c           	         |j                   D ]w  }|d   dk(  s|d   \  | j                  d<   | j                  d<   | j                  d<   | j                  d<   | j                  d<   | j                  d	<   |d
   | j                  d
<   y y )NviewMode3dextentwsenbttbres)displaysr   )r   rootdisplays      r   r   zNvizTask._getExtentA   s    }} 
	8Gz"d* H%KK$KK$KK$KK$KK$KK$'.w'7G$
	8r   c                 6   |D ]  }|d   s	|d   st        |d   dd      \  }}|s&d|d   v r| j                  |d   d   |       d	|d   v r| j                  |d   d	   |       d
|d   v snd|d   d
   v sy| j                  |d   d
   d   |        y )NcheckednvizcmdFmap)fullyQualifiedparamsurface)mapNamevolumevectorpoints)r   _processSurface_processVolume_processPoints)r   r    layer	layerNamefounds        r   r   zNvizTask._processLayersN   s     	E#=2eU% Iu E&M)$$U6]9%=y$Q5=(##E&M($;Y#O5=(uV}X66''fh/99 ( %	r   c                    | j                  d|       d}d}t        ||      D ]o  \  }}d }d }||d   v r#|d   |   d   r|d   |   d   }n|d   |   d   }n|dk(  rd}n|d	k(  r|}|r| j                  |d   |       [| j                  |d
   |       q dD ]"  }	|d   d   d   |	   }
| j                  |	|
       $ |d   d   d   }
| j                  d|
       t        dd      D ]"  \  }}|d   d   |   }
| j                  ||
       $ g }dD ]"  }|j                  t        |d   |                $ dj	                  |      }
| j                  d|
       y )Nelevation_map)colorshinetransp))	color_maprE   )shininess_mapshininess_value)transparency_maptransparency_value	attributer5   valuerG   r   rE      )modeshadingstyledrawrP   descz
wire-color
wire_color)coarsefine)resolution_coarseresolution_fine
resolutionxyzposition,surface_position)_setMultiTaskParamzipappendstrjoin)r   r8   r9   
attributes
parametersattrparamsmapnameconstrP   rN   mode1mode2poscoors                  r   r=   zNvizTask._processSurfacee   s   9 2



  
J7 	:LD&GEw{++;'-e4%k248AG#K06w?E8#EW_%G''q	7;''q	59#	:( 1 	1DFOF+F3D9E##D%0	1 -g6e4 H
 	2LE5 FOL1%8E##E51		2 # 	7DJJs7:.t456	7 2E:r   c                    dD ]-  }||v s||   d   }| j                  d|z   t        |             / d|v r*|d   d   }| j                  ddj                  |             d|v r?t        t	        j
                  d	d
ddgd            |d   d      }| j                  d|       d|v r1|d   d   dk(  r| j                  dd       y | j                  dd       y y )N)rE   sizewidthrN   vpoint_heightvpoint_positionz0,0,{h})hmarkerr3   r;   r<   internal)groupkeysubkeysettings_typevpoint_markerrP   typer%   vpoint_mode3Dr8   )rb   re   formatlistr	   Get)r   r<   r9   attribvalru   rx   s          r   r?   zNvizTask._processPoints   s   0 	FFVnW-''	F(:CHE	F vH%g.F##$5y7G7G&7G7QRv    $h/",	 Xw')F ##OV<Vf~f%-''t<''yA	 r   c                    | j                  d|       |d   d   d   r| j                  j                  dd       |d   }|r|d   d   d   d	   }| j                  d
|       |D ]  }d}d}t        ||      D ]  \  }}	d }
d }||v r#||   d   r	||   d	   }
n!t	        ||   d	         }n|dk(  rd}n|dk(  r|}
|
r| j                  |	d   |
       X|dk(  r"| j                  |	d   dt        |      z          | j                  |	d   |        |d   d	   s| j                  j                  dd        |d   }|r|d   d   d   d	   }| j                  d
|       |D ]  }| j                  d|d   d	          |d   d   }| j                  ddd|   z          |d   }|d   |d   |d   |d   |d   |d    f}| j                  d!d"j                  |D cg c]  }t        |       c}              g }d#D ]3  }|j                  t        |d   |                d"j                  |      }5 | j                  d$       y c c}w )%Nr:   rS   boxenabledr+   T
isosurfacerZ   rN   volume_resolution)toporE   rF   rG   ))Nisosurf_level)isosurf_color_mapisosurf_color_value)isosurf_shininess_mapisosurf_shininess_value)isosurf_transparency_mapisosurf_transparency_valuer5   rG   r   rE   r   rO   z1:inoutr*   sliceslice_transparencyr_   axisxyzx1x2y1y2z1z2slice_positionr`   r[   volume_position)rb   r   set_flagrc   floatre   rf   rd   )r   r:   r9   isosurfaces	res_valuer   rg   rh   ri   rj   rk   rl   slicesslice_r   ro   coordscrp   rN   s                       r   r>   zNvizTask._processVolume   s   '2&>% +IIsD) \*v|4\B7KI##$7C)  2
A

 %(
J$? FLD&"G Ez)%d+E2&0&6w&?G$)*T*:7*C$DE8+$%E!W_&-G//q	7C6> !33F1Itc%j?PQ 33F1IuE-F. g&w/II&&sD1A 2D v|4W=gFI##$7C  ''(<fX>Nw>WXj)&1''d1CDZ(IIIIII ''$chh/G1A/G&H$ # 	"DJJs6*-d345HHSME	" 	 159 0Hs   H=c           	      N   |d   d   d   }| j                   j                  d| j                  |d             | j                   j                  d| j                  |d   d   d   |d   d   d	   f             | j                   j                  d
|d   d
   d          | j                   j                  d|d   d   d          | j                   j                  d|d   d   d          | j                   j                  d|d   d   d          | j                   j                  d| j                  |d   d   d   |d   d   d	   |d   d   d   f             | j                   j                  d| j                  |d   d   d   |d   d   d	   |d   d   d   dz  f             |d   d   d d }| j                   j                  d| j                  |d             | j                   j                  dt        |d   d                | j                   j                  d|d   d          y )Nview
backgroundrE   bgcolor:)delimr_   r\   r]   ru   iviewrN   perspectivepersptwistzexagzz-exagfocusr^   light_positionlightg      Y@   light_colorlight_brightnessbrightlight_ambientambient)r   	set_param_joinint)r   staterE   s      r   r   zNvizTask._processState   s6   fl+G4		Itzz%sz'CD		JJvz*3/vz1J31OP	
 			HeGnX&>w&GH		M5=+A'+JK		GU6]7%;G%DE		GU6]8%<W%EF		JJ'N7+C0'N7+C0'N7+C0		
 			JJ'N:.s3'N:.s3'N:.s3e;		
 gw'+		M4::e3:+GH		.E'N84L0MN		OU7^I-FGr   c                     | j                   j                  |      d   }| j                   j                  || j                  ||f             y )NrN   )r   	get_paramr   r   )r   r7   rN   lasts       r   rb   zNvizTask._setMultiTaskParam   s<    yy""5)'2		E4::tUm#<=r   c                 l    t        | j                  |      }|j                  t        t        |            S r   )filter_ignorerf   r5   re   )r   toJoinr   s      r   r   zNvizTask._join$  s(    f-zz#c6*++r   c                     |dk(  s|yy)N FT )r   rN   s     r   r   zNvizTask._ignore(  s    B;%-r   c                      y)N)rD   rH   vlinevpointr:   r   r   s    r   ListMapParameterszNvizTask.ListMapParameters.  s     Kr   c                    g }| j                   s|S t        |      dkD  rt        t        d            |d   }t	        |d      r|j
                  }nt        t        d            |D ]  }| j                   j                  ||       |dk(  r8| j                   j                  d| j                   j                  |      d          |d	k(  r| j                   j                  d
d       | j                   j                  dd       | j                   j                  dd       | j                   j                  ddd      }|j                  |        |S )NrO   z&Please add only one layer in the list.r   mapsz.No map series nor space-time dataset is added.rD   rH   rN   r:   r   r   	overwriteToutputtobechangedFignoreErrorsignoreRequiredignoreDefault)r   lenr   r   hasattrr   r   r   r   get_cmdrd   )r   	layerList	paramNamecommandsr@   seriesrN   r4   s           r   GetCommandSerieszNvizTask.GetCommandSeries4  s/   yyOy>AQGHII!5&!ZZFQOPQQ 	!EII	51O+		##!4!4Y!?!H H$		##$7<II{D1II-8))##"5 $ C OOC 	!  r   c                     | j                   sy | j                   j                  dd       | j                   j                  dd       | j                   j                  ddd      }t	        j
                  |      S )Nr   Tr   r   Fr   )r   r   r   r   r   cmdlist_to_tuple)r   r4   s     r   
GetCommandzNvizTask.GetCommandT  sg    yy		;-		Hm4iiuD   
 %%c**r   c                     | j                   S r   )r   r   s    r   	GetRegionzNvizTask.GetRegion^  s    {{r   N)r`   )__name__
__module____qualname__r   r"   r   r   r=   r?   r>   r   rb   r   r   r   r   r   r   r   r   r   r   r      sU    
+88.0;dB0H:T%HN>,K@+r   r   c                      t        d      } | j                  ddgd      }|D ]0  }t        |       t        d	d|d   d|d   \  }}t        ||       2 y )
Nz/home/anna/testy/nviz/t12.gxwaspect	elevationrH   Tr   )getErrorMsgprogrO   r   )r   r   printr   )r3   cmdsr4   
returncodemessages        r   testr   b  sg    34D   (K!8+FD #c
(QTAQ#a&Q
Gj'"#r   __main__)__doc__
__future__r   xml.etree.ElementTreer   ElementTreeImportErrorelementtree.ElementTreecore.workspacer   	core.gcmdr   r   
core.utilsr   grass.scriptr   r   core.settingsr	   r   r   r   r   r   r   <module>r      sf     &,)) 0 , * & &@ @F
	# zF s
  ,+,s   	A AA