
    ը	fc                         d Z ddlZddlZddlZddlmc mZ ddlm	Z	 ddl
mZ ddlmZ ddlmZmZmZmZ  G d de      Zy)	a  
@package nviz.preferences

@brief Nviz (3D view) preferences window

Classes:
 - preferences::NvizPreferencesDialog

(C) 2008-2011 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 Martin Landa <landa.martin gmail.com> (Google SoC 2008/2010)
@author Enhancements by Michael Barton <michael.barton asu.edu>
@author Anna Kratochvilova <KratochAnna seznam.cz> (Google SoC 2011)
    N)	globalvar)UserSettings)PreferencesBaseDialog)SpinCtrlCheckBox
StaticText	StaticBoxc                   X    e Zd ZdZ ed      efdZd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zy)NvizPreferencesDialogzNviz preferences dialogz3D view default settingsc                    t        j                  | ||||       | j                  t        j                  t
        j                  j                  t        j                  d      t        j                               | j                  j                  | _        | j                  | j                         | j!                  | j                         | j#                  | j                         | j%                  | j                         | j'                  | j                         | j)                  | j+                                | j-                  | j.                         | j0                  j3                  t5        d             y )N)parenttitlegifacesettingszgrass_nviz.icoz3Revert settings to default, changes are not applied)r   __init__SetIconwxIconospathjoinr   ICONDIRBITMAP_TYPE_ICOr   nviztoolWin_createViewPagenotebook_createFlyPage_createLightPage_createSurfacePage_createVectorPage
SetMinSizeGetBestSizeSetSizesize
btnDefault
SetToolTip_)selfr   r   r   r   s        1/usr/lib/grass83/gui/wxpython/nviz/preferences.pyr   zNvizPreferencesDialog.__init__"   s    	&&uVh	
 	GGY..0@A2CUCU	
 {{'' 	T]]+DMM*dmm,.t}}-((*+TYY""CD	
    c           
         t        j                  |t         j                        }|j                  |dt	        d      z         t        j
                  t         j                        }t        |t         j                  dt	        d      z        }t        j                  |t         j                        }t        j                  dd      }d}t        j                  d	d
d      }t        j                  d	d
dd      }	|j                  t        |t         j                  t	        d            |dft         j                         |j                  t        |t         j                  t	        d            |dft         j                  t         j                  z         t!        |t         j                  d|d   |	d   |	d         }
|
j#                         | j$                  d<   |j                  |
|dft         j                         |j                  t        |t         j                  t	        d            |dft         j                  t         j                  z         t!        |t         j                  d|d   |	d   |	d   dz
        }|j#                         | j$                  d<   |j                  ||dft         j                         |dz  }t        j                  d	d
d      }|j                  t        |t         j                  t	        d            |dft         j                         |j                  t        |t         j                  t	        d             |dft         j                  t         j                  z         t!        |t         j                  d|d!   d"z  dd"      }|j#                         | j$                  d#<   |j                  ||dft         j                         |j                  t        |t         j                  d$      |dft         j                  t         j                  z         t!        |t         j                  d|d%   d"z  dd"      }|j#                         | j$                  d&<   |j                  ||dft         j                         |dz  }t        j                  d	d
d'      }t        j                  d	d
d'd      }|j                  t        |t         j                  t	        d(            |dft         j                         |j                  t        |t         j                  t	        d            |dft         j                  t         j                  z         t!        |t         j                  d|d   |d   |d         }|j#                         | j$                  d)<   |j                  ||dft         j                         |dz  }t        j                  d	d
d*      }|j                  t        |t         j                  t	        d+            |dft         j                         |j                  t        |t         j                  t	        d            |dft         j                  t         j                  z         t!        |t         j                  d|d   d,d-      }|j#                         | j$                  d.<   |j                  ||dft         j                         |j                  |dt         j&                  t         j(                  z  d/       |j                  |dt         j(                  t         j*                  z  t         j,                  z  t         j.                  z  d/       t        |t         j                  dt	        d0      z        }t        j                  |t         j                        }t        j                  dd      }|j                  t        |t         j                  t	        d1            d2t         j                         t1        j2                  |t         j                  t        j                  d	d
d3d4g      t4        j6                  5      }|j9                  d6       |j#                         | j$                  d7<   |j                  |d89       |j;                  d       |j                  |dt         j&                  t         j(                  z  d:/       |j                  |dt         j(                  t         j&                  z  d:/       |j=                  |       |S );&Create notebook page for view settingsr   id %s Viewpagetextr   r/   label   vgaphgapr   r   viewperspgroupkeysubkeyinternalr>   r?   r@   settings_typezPerspective:posflagzvalue:   A   valueminmaxr   r/   r%   initialrL   rM   znviz:view:persp:value   zstep:stepznviz:view:persp:step   position	Position:x:xd   znviz:view:position:xy:yznviz:view:position:ytwistzTwist:znviz:view:twist:valuezz-exagzZ-exag:g    .    .Aznviz:view:z-exag:value
proportionrF   borderzImage AppearancezBackground color:r   r   
backgroundcolorr/   colourr%   	GetColourznviz:view:background:colorr   rG   rE      )r   PanelID_ANYAddPager(   BoxSizerVERTICALr	   StaticBoxSizerGridBagSizerr   GetAddr   ALIGN_CENTER_VERTICALALIGN_RIGHTr   GetIdwinIdALLEXPANDLEFTRIGHTBOTTOMcselColourSelectr   DIALOG_COLOR_SIZESetNameAddGrowableColSetSizer)r)   r   panel	pageSizerboxboxSizer	gridSizerrowpvalsipvalspvalpstepposvalspxpytvalsitvalstvalzvalszvalra   s                        r*   r   z%NvizPreferencesDialog._createViewPage=   sl   RYY7e&1V9*<=KK,	u&AfI:NO$$S"++6OO3	  v6'J!!fWJ
 	e		>9JKa)) 	 	

 	e		8Ea))BNN: 	 	
 yy'Nuu
 /3jjl

*+dar/G/GHe		7Da))BNN: 	 	
 yy&Muu!
 .3[[]

)*e#q0H0HIq ""VJOe		;Ha)) 	 	

 	e		4Aa))BNN: 	 	
 yyCL3&
 .0XXZ

)*bsAhR-E-EFe		>a))BNN: 	 	
 yyCL3&
 .0XXZ

)*bsAhR-E-EFq
   v6'J!!fWJ
 	e		8Ea)) 	 	

 	e		8Ea))BNN: 	 	
 yy'Nuu
 /3jjl

*+dar/G/GHq   v6(Ke		9Fa)) 	 	

 	e		8Ea))BNN: 	 	
 yy'N
 04zz|

+,dar/G/GHY1266BII3EaPRWW$rxx/"));	 	 	
 RYYf:L8M.N
 $$S"++6OO3	 	e		;N9OP)) 	 	
 !!yy##&,1H ,,
 	k"38;;=

/0e(  #Y1266BII3EaPh1299rvv3EaPy!r+   c                 ^   t        j                  |t         j                        }|j                  |dt	        d      z         t        j
                  t         j                        }t        |t         j                  dt	        d      z        }t        j                  |t         j                        }t        j                  dd      }|j                  t        |t         j                  t	        d	            d
t         j                         t        |t         j                  ddt        j                  ddddg      d      }|j!                         | j"                  d<   |j                  |d       |j                  t        |t         j                  t	        d            dt         j                         t        |t         j                  ddt        j                  ddddg      d      }|j!                         | j"                  d<   |j                  |d       |j%                  d       |j                  |dt         j&                  t         j(                  z  d       |j                  |dt         j(                  t         j&                  z  d       |j+                  |       |S ) r-   r.   r0   zFly-throughr2   zFly-through moder5   r7   r8   z
Move exag:r_   rD   rG      r   flyexagmover=   rH   )r/   rL   rM   rO   r%   znviz:fly:exag:movere   rf   z
Turn exag:rG   r   turnznviz:fly:exag:turnrG   rG   r   rg   r\   )r   rh   ri   rj   r(   rk   rl   r	   rm   rn   rp   r   rq   r   r   ro   rs   rt   r~   ru   rv   r   )	r)   r   r   r   r   r   r   moveExagturnExags	            r*   r   z$NvizPreferencesDialog._createFlyPage   s   RYY7e&1]3C*CDKK,	RYYf:L8M.N
 $$S"++6OO3	 	e		<I)) 	 	
 yy $$6uffEUV
 ,4>>+;

'(hF+ 	e		<I)) 	 	
 yy $$6uffEUV
 ,4>>+;

'(hF+  #Y1266BII3EaPh1299rvv3EaPy!r+   c           	         t        j                  |t         j                        }|j                  |dt	        d      z         t        j
                  t         j                        }t        |t         j                  dt	        d      z        }t        j                  |t         j                        }t        j                  dd      }t        j                  d	d
d      }|j                  t        |t         j                  t	        d            dt         j                         |j                  t        |t         j                  t	        d            dt         j                  t         j                  z         t!        |t         j                  d|d   dz  dd      }|j#                         | j$                  d<   |j                  |dt         j                         |j                  t        |t         j                  d      dt         j                  t         j                  z         t!        |t         j                  d|d   dz  dd      }	|	j#                         | j$                  d<   |j                  |	dt         j                         |j                  t        |t         j                  t	        d            dt         j                  t         j                  z         t!        |t         j                  d|d    d!d      }
|
j#                         | j$                  d"<   |j                  |
d#t         j                         t        j                  d	d
d$      }|j                  t        |t         j                  t	        d%            d&t         j                         t!        |t         j                  d|d!d      }|j#                         | j$                  d'<   |j                  |d(t         j                         t        j                  d	d
d)      }|j                  t        |t         j                  t	        d*            d+t         j                         t!        |t         j                  d|d!d      }|j#                         | j$                  d,<   |j                  |d-t         j                         |j                  t        |t         j                  t	        d.            d/t         j                         t'        j(                  |t         j                  t        j                  d	d
d0      t*        j,                  1      }|j/                  d2       |j#                         | j$                  d3<   |j                  |d45       |j                  |d6t         j0                  t         j2                  z  d78       |j                  |d!t         j2                  t         j0                  z  d78       |j5                  |       |S )9z'Create notebook page for light settingsr.   r0   Lightingr2   Lightr5   r7   r8   r   lightrS   r=   rT   r_   rD   rU   re   rH   rV   rW   irN   znviz:light:position:x)r   rP   rX   )r   r7   rY   znviz:light:position:y)r   rR   zz:)r   rg   zr   znviz:light:position:z)r      brightzBrightness:r   znviz:light:brightrG   rP   ambientzAmbient:rP   r   znviz:light:ambientrP   rP   Color:)r7   r   ra   rb   rd   znviz:light:colorr7   rP   rf   rG   rg   r\   )r   rh   ri   rj   r(   rk   rl   r	   rm   rn   r   ro   rp   r   rq   rr   r   rs   rt   rz   r{   r   r|   r}   ru   rv   r   )r)   r   r   r   r   r   r   r   r   r   pz	brightvalr   ambvalambra   s                   r*   r   z&NvizPreferencesDialog._createLightPage8  s   RYY7e&1Z=*@AKK,	u&AgJ:OP$$S"++6OO3	 ""WZPe		;H)) 	 	

 	e		4A))BNN: 	 	
 yyCL3&
 /1hhj

*+bf2+C+CDe		>))BNN: 	 	
 yyCL3&
 /1hhj

*+bf2+C+CDe		4A))BNN: 	 	
 yyCL
 /1hhj

*+bf2+C+CD !$$6wxP	e		=9IJ)) 	 	
 RYYXyaUX
 +1,,.

&'f&r/G/GH !!GINe		:G)) 	 	
 RYYXv1RU
 ,/99;

'(cvB,D,DE 	e		8E)) 	 	
 !!yy##&ggN,,	
 	k").

%&e(Y1266BII3EaPh1299rvv3EaPy!r+   c           
         t        j                  |t         j                        }|j                  |dt	        d      z         t        j
                  t         j                        }t        |t         j                  dt	        d      z        }t        j                  |t         j                        }t        j                  dd      }|j                  t        |t         j                  t	        d	            t         j                  d
       t        j                  |t         j                  dt	        d      t	        d      t	        d      g      }|j                         | j                  d<   |j!                  d       |j#                  t%        j&                  ddddg             |j                  |t         j                  d       |j                  t        |t         j                  t	        d            t         j                  d       t%        j&                  ddddg      }|j                  t        |t         j                  t	        d            t         j                  d       t)        |t         j                  d|dd !      }	|	j                         | j                  d"<   |j                  |	t         j                  d#       |j                  t        |t         j                  t	        d$            t         j                  d%       t%        j&                  dddd&g      }|j                  t        |t         j                  t	        d            t         j                  d'       t)        |t         j                  d|dd !      }
|
j                         | j                  d(<   |j                  |
t         j                  d)       |j                  t        |t         j                  t	        d*            t         j                  d+       t        j                  |t         j                  dt	        d,      t	        d      g      }|j                         | j                  d-<   |j!                  d       |j#                  t%        j&                  dddd.g             |j                         | j                  d-<   |j                  |t         j                  d/       |j                  t        |t         j                  t	        d0            t         j                  d1       t+        j,                  |t         j                  t%        j&                  dddd2g      t.        j0                  3      }|j!                  d4       |j                         | j                  d5<   |j                  |t         j                  d6       |j                  |dt         j2                  t         j4                  z  d78       |j                  |d9t         j4                  t         j6                  z  t         j8                  z  t         j:                  z  d78       |j=                  |       |S ):z)Create notebook page for surface settingsr.   r0   Surfacer2   Drawr5   r7   r8   zMode:r_   rF   rE   )rJ   rJ   coarsefinebothr   r/   r%   choicesznviz:surface:draw:modeGetSelectionr   surfacedrawmoder=   re   z
Fine mode:r   zres-finezresolution:r   rH   rG   rW   rN   znviz:surface:draw:res-finer   zCoarse mode:r   z
res-coarse)rP   rG   znviz:surface:draw:res-coarser   zstyle:)r7   rG   wireznviz:surface:draw:stylestyler   zwire color:)rR   rG   z
wire-colorrb   rd   znviz:surface:draw:wire-color)rR   rP   rg   r\   r   )r   rh   ri   rj   r(   rk   rl   r	   rm   rn   rp   r   rq   Choicers   rt   r}   SetSelectionr   ro   r   rz   r{   r   r|   ru   rv   rw   rx   ry   r   )r)   r   r   r   r   r   r   r   resr   r   r   ra   s                r*   r    z(NvizPreferencesDialog._createSurfacePage  s   RYY7e&1Y<*?@KK,	 u&AfI:NO$$S"++6OO3	 	e		7D)) 	 	

 yyyyx[!F)QvY7	
 04zz|

+,^$6y&&AQR	
 	d!9!9vF 	e		<I)) 	 	

 VFJCWXe		=9IJ)) 	 	

 RYYXss
 48::<

/0d!9!9vF 	e		>9JK)) 	 	

 i0F
 	e		=9IJ)) 	 	

 RYYXss
 6<\\^

12f2#;#;He		8E)) 	 	

 		RYYX&	1Y<?X
 16

,-n%6y&'ARS	
 16

,-e"":":Ge		=9IJ)) 	 	

 !!yy##)V\4J ,,
 	k"5:[[]

12e"":":GY1266BII3EaPRWW$rxx/"));	 	 	
 	y!r+   c                     t        j                  |t         j                        }|j                  |dt	        d      z         t        j
                  t         j                        }t        |t         j                  dt	        d      z        }t        j                  |t         j                        }t        j                  dd      }d	}|j                  t        |t         j                  t	        d
            |d	ft         j                         t        |t         j                  dddd      }|j                         | j                  d<   |j!                  t#        j$                  ddddg             |j                  ||dft         j                         |j                  t        |t         j                  t	        d            |dft         j                         t'        j(                  |t         j                  t*        j,                        }	|	j/                  d       |	j                         | j                  d<   |	j1                  t#        j$                  ddddg             |j                  |	t         j                  |df       |j                  |dt         j2                  t         j4                  z  d       |j                  |d	t         j4                  t         j6                  z  t         j8                  z  t         j:                  z  d       t        |t         j                  dt	        d       z        }t        j                  |t         j                        }t        j                  dd      }d	}t=        |t	        d!      "      }
|
j?                  t	        d#             |j                  |
|d	ft         j                         |
j                         | j                  d$<   |
j!                  t#        j$                  ddd%d&g             |dz  }|j                  t        |t         j                  t	        d'            |d	ft         j                         t        |t         j                  dddd(      }|j                         | j                  d)<   |j!                  t#        j$                  ddd%d*g             |j                  ||dft         j                         |dz  }|j                  t        |t         j                  t	        d+            |d	ft         j                         t        j@                  |t         j                  d,t#        j$                  ddd%d-gd./      0      }|j/                  d1       |j                         | j                  d2<   |jC                  t#        j$                  ddd%d-g             |j                  |t         j                  |df       |dz  }|j                  t        |t         j                  t	        d            |d	ft         j                         t'        j(                  |t         j                  t*        j,                        }	|	j/                  d       |	j                         | j                  d3<   |	j1                  t#        j$                  ddd%dg             |j                  |	t         j                  |df       |j                  |dt         j2                  t         j4                  z  d       |j                  |d	t         j4                  t         j6                  z  t         j8                  z  t         j:                  z  d       |jE                  |       |S )4z(Create notebook page for vector settingsr.   r0   Vectorr2   zVector linesr5   r7   r8   r   zWidth:rD   rH      rG   rW   rN   znviz:vector:lines:widthr   vectorlineswidthr=   r   rR   )r/   r%   rd   znviz:vector:lines:colorra   rg   r   r\   zVector pointszAutomatic size)r   r6   z=Icon size is set automatically based on landscape dimensions.znviz:vector:points:autosizepointsautosizezSize:r[   znviz:vector:points:sizer%   zMarker:)rW   rJ   markerrA   rB   r   r   znviz:vector:points:markerznviz:vector:points:color)#r   rh   ri   rj   r(   rk   rl   r	   rm   rn   rp   r   rq   r   rs   rt   SetValuer   ro   rz   r{   r   r|   r}   	SetColourru   rv   rw   rx   ry   r   r'   r   r   r   )r)   r   r   r   r   r   r   r   iwidthicolorr   isizeisyms                r*   r!   z'NvizPreferencesDialog._createVectorPage)  s   RYY7e&1X;*>?KK,	 u&AnDU:VW$$S"++6OO3	e		8Ea)) 	 	
 RYYXrqc
 17

,-6x'@RS	
 	f3(1I1IJ 	e		8Ea)) 	 	

 ""biii&A&A
 	{#06

,-6x'@RS	
 	f2#;#;#qJY1266BII3EaPRWW$rxx/"));	 	 	
 u&AoDV:WX$$S"++6OO3	52B0CDMN	
 	hS!H23K3KL4<NN4D

016x:@VW	
 	qe		7Da)) 	 	
 RYYXss
 16

,-6x6@RS	
 	e#q0H0HI 	qe		9Fa)) 	 	

 yyyy $$ (+(		

 	^$26**,

./6x8@TU	
 	d!9!9QxH 	qe		8Ea)) 	 	

 ""biii&A&A
 	{#17

-.6x7@ST	
 	f2#;#;#qJY1266BII3EaPRWW$rxx/"));	 	 	
 	y!r+   c                 z   t        j                  | j                  j                        | j                  _        | j
                  j                         D ]  }d}	 |j                  d      \  }}}| j                  j                  |||      }|dk(  r|dv rt        |      dz  }| j                  | j
                  |         }|j                         dk(  r|j                  |      }|j                  |      } y# t        $ r8 |j                  d      \  }}}}| j                  j                  ||||g      }Y w xY w)zButton 'Set to default' pressedN:rS   rV   rY   rW   r   )copydeepcopyr   defaultSettingsuserSettingsrt   keyssplitro   
ValueErrorfloatFindWindowByIdGetNamer   r   )	r)   eventgkssubkey1r>   r?   r@   rK   wins	            r*   	OnDefaultzNvizPreferencesDialog.OnDefault  s   %)]]4==3P3P%Q" ::??$ 	,CGI%(YYs^"sF))%f= #j(!%L3.E%%djjo6C{{}.((/U+	,
  I.1iin+sFG))%vw6GHIs   2C99>D:9D:c                    | j                   j                         D ]  }	 |j                  d      \  }}}d}| j                   |   }| j	                  |      }|j                         dk(  r|j                         }	n=|j                         dk(  rt        |j                               }	n|j                         }	|dk(  r|dv rt        |	      dz  }	|r!| j                  j                  ||	|||g       | j                  j                  ||	||        | j                  j                          y# t        $ r |j                  d      \  }}}}Y w xY w)z'Apply Nviz settings for current sessionr   Nr   rd   rS   r   rW   )rt   r   r   r   r   r   r   tupleGetValuer   r   Setr   LoadSettings)
r)   r   itemr>   r?   r@   r   r/   r   rK   s
             r*   OnApplyzNvizPreferencesDialog.OnApply  s.   JJOO% 	=D>%)ZZ_"sF D!B%%b)C{{}.((*+-clln-#j(!%L3.E!!%fg5FG!!%V<-	=0 	!!#)  >.2jjo+sFG>s   D,,EEc                 P   | j                  d       i }t        j                  |       t        j                  d      |d<   t        j                  |       | j
                  j                  j                  t        d      t        j                  z         | j                          y)z[Save button pressed

        Apply changes and save settings to configuration file
        N)r   r   )r>   z$3D view settings saved to file <%s>.)r   r   ReadSettingsFilero   
SaveToFiler   	_gconsoleWriteLogr(   filePathDestroy)r)   r   fileSettingss      r*   OnSavezNvizPreferencesDialog.OnSave  s}    
 	T%%|<+//f=V-&&458M8MM	
 	r+   N)__name__
__module____qualname____doc__r(   r   r   r   r   r   r    r!   r   r   r    r+   r*   r   r      sH    ! %&&@$AL
6@D7rxtunJX,,$8r+   r   )r   r   r   r   wx.lib.colourselectlibcolourselectrz   corer   core.settingsr   gui_core.preferencesr   gui_core.wrapr   r   r   r	   r   r   r+   r*   <module>r      s9   $ 
  	 " "  & 6 C CW1 Wr+   