
    ը	f1k                    |   d Z ddlZddlZddlZddlZddlZddlmc mZ	 ddl
mc mZ ddlmc mZ 	 ddlmc mc mZ 	 ddlmZ 	 ddlmc 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& ddl'm(Z( ddl)m*Z* dd	l+m,Z,m-Z-m.Z.m/Z/m0Z0 dd
l"m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z? ddl@mAZAmBZBmCZCmDZD ddlEmFZFmGZGmHZH  G d de0      ZI G d de3      ZJ G d deJ      ZK G d deJ      ZLy# e$ r ddlmc mZ Y w xY w# e$ r% 	 ddlmc mc mZ n# e$ r ddlmc mZ Y nw xY wY w xY w# e$ r dZY w xY w)a-  
@package nviz.tools

@brief Nviz (3D view) tools window

Classes:
 - tools::NvizToolWindow
 - tools::PositionWindow
 - tools::ViewPositionWindow
 - tools::LightPositionWindow

(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 gmail.com> (Google SoC 2011)
    N)foldpanelbar)	globalvar)VectorDBInfo)GMessage
RunCommand)ThematicVectorTable)UserSettings)ScrolledPanelNumTextCtrlFloatSliderSymbolButton	GNotebook)Select)WindowSpinCtrlPseudoDCToggleButtonButtonTextCtrlSlider
StaticText	StaticBoxCheckListBoxColourSelect)Debug)wxUpdatePropertieswxUpdateViewwxUpdateLightwxUpdateCPlane   )DM_FLAT
DM_GOURAUDMAX_ISOSURFSc                      e Zd ZdZej
                  ej                  ej                  z  fdZ
d Zd Zd Zd ZddZdd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ddZd Zd Zd Z d Z!ddZ"d Z#d Z$d Z%d Z&d Z'd  Z(d! Z)d" Z*d# Z+	 dd$Z,d% Z-d& Z.d' Z/d( Z0d) Z1d* Z2d+ Z3d, Z4d- Z5d. Z6d/ Z7d0 Z8d1 Z9	 	 	 	 	 dd3Z:d4 Z;d5 Z<d6 Z=d7 Z>d8 Z?d9 Z@d: ZAd; ZBd< ZCd= ZDd> ZEd? ZFd@ ZGdA ZHdB ZIdC ZJdD ZKdE ZLdF ZMdG ZNdH ZOddIZPddJZQdK ZRdL ZSdM ZTdN ZUdO ZVdP ZWdQ ZXdR ZYddSZZdT Z[ddUZ\dV Z]dW Z^dX Z_dY Z`dZ Zad[ Zbd\ Zcd] Zdd^ Zed_ Zfd` Zgda Zhdb Zidc Zjdd Zkde Zldf Zmdg Zndh Zodi Zpdj Zqdk Zrdl Zsdm Ztdn Zudo Zvdp Zwdq Zxdr Zyds Zzdt Z{du Z|dv Z}dw Z~dx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZddZddZd Zd Zd Zd Zy2)NvizToolWindowzNviz (3D view) tools panelc                    t        j                  dd       || _        || _        || _        |j                         | _        | j                  j                         | _        t        j                  | ||       i | _        i | _        | j                  | j                         dt        d      z         | j                  | j!                         dt        d      z         | j                  | j#                         dt        d      z         | j                  | j%                         dt        d	      z         | j                  | j'                         dt        d
      z         | j)                          | j                  j+                  |        d| _        d| _        d| j                  j0                  d<   | j                  j3                  d       | j5                  t6        j8                  | j:                         | j5                  t6        j<                  | j>                         | j                  jA                         jB                  jE                  | jF                         | j                  jA                         jH                  jE                  | jJ                         t        j                  dd       | jM                          t7        jN                  | jP                  d       t7        jN                  | jR                         y )N   zNvizToolWindow.__init__())style %s View)pagetextData
AppearanceAnalysis	AnimationFquick   view)*r   msgparenttree
mapDisplay	GetWindow	mapWindow
GetDisplay_displayr   __init__winr+   AddPage_createViewPage__createDataPage_createAppearancePage_createAnalysisPage_createAnimationPageUpdateSettings
SetToolWinpageChangingvetoGSelectEvtrenderRefreshBindwxEVT_NOTEBOOK_PAGE_CHANGEDOnPageChangedEVT_SIZEOnSizeGetAnimationanimationFinishedconnectOnAnimationFinishedanimationUpdateIndexOnAnimationUpdateIndexUpdate	CallAfterSetPageSetInitialMaps)selfr5   r6   displayidr(   kwargss          +/usr/lib/grass83/gui/wxpython/nviz/tools.pyr<   zNvizToolWindow.__init__X   s8    			!01	! **,1134u5	 	$..0v&	7IJ 	$..0v&	7IJ 	$446Vao=UV 	$2246AjM;QR$335FQ{^<ST!!$'!#).g&u% 			"..0B0BC		"++t{{+##%77??$$	
 	##%::BB''	
 			!01
T\\6*
T(()    c                    dD ]d  }| j                   j                  dd      }|$| j                   j                  |d      }| j                  j                  j                  |d      }||v r|j                         }n	 |d	   j                         }|d
k(  ra| j                  | j                  d   d         j                  |       | j                  | j                  d   d         j                  |       |dk(  r2| j                  | j                  d   d         j                  |       .|dk(  s5| j                  | j                  d   d         j                  |       g y#  Y nxY w)z!Set initial raster and vector map)rastervector	raster_3dFT)multicheckedOnlyNmaplayerkeyltypeactiver   rb   surfacemapfringerc   rd   volume)
r6   GetSelectedLayerGetLayerInfor9   MapGetListOfLayersGetNameFindWindowByIdr=   SetValue)r[   rk   selectedLayerlayers	selections        r_   rZ   zNvizToolWindow.SetInitialMaps   s[   6 	SE II66UPT6UM$ II22=j2QM^^''77eD7QF&)113	 &q	 1 1 3I  ##DHHY$7$>?HHS##DHHX$6u$=>GG	R("##DHHX$6u$=>GG	R+%##DHHX$6u$=>GG	R'	Ss   E,,E1c                 <   d|v rl|d   | j                   _        |d   | j                  | j                  d   d         _        | j                  | j                  d   d         j                          d|v r|d   | j                   _        d|v rl|d   | j                   _        |d   | j                  | j                  d   d         _        | j                  | j                  d   d         j                          d|v r |d   d   | j                   j                  d<   y y )Nr3   positioniviewlightflyexag)	r9   r3   rv   r=   dataPostDrawr}   r~   r   )r[   r^   s     r_   UpdateStatezNvizToolWindow.UpdateState   s   V"(.DNNEKF^D 0 <=B 0 <=FFHf#)'?DNN f#)'?DNN FLWoD 1* =>C 1* =>GGIF?)/v)>DNNv& r`   c                 H   t        j                  t        j                  dd            }t        j                  t        j                  dd            }t        j                  t        j                  dd            }| j	                  |||       | j                  d       | j                          | j                  d       | j                  d       | j                  j                          | j                  d	       | j                  d
       | j                          y)z/Load Nviz settings and apply to current sessionnvizr3   groupri   r~   r   )r3   r~   r   TzExagrm   rc   N)copydeepcopyr	   Getr   PostViewEventPostLightEvent
UpdatePager9   ReloadLayersDatarE   )r[   r3   r~   r   s       r_   LoadSettingszNvizToolWindow.LoadSettings   s    }}\--FGHl..VIJmmL,,6uEFd%S9& '')	"!r`   c                     |j                         }|dv rE| j                  |      j                         d   }t        j                  d| j
                  |f       y y )N)r       r2   r   d   )GetSelectionGetPageGetChildrenrL   	CallLaterUpdateScrolling)r[   eventnew	foldpanels       r_   rN   zNvizToolWindow.OnPageChanged   sS      " )S)557:ILLd22YLA r`   c                 \    t        |      }t        j                  | j                  |       y)zChange view settingsr   N)r   rL   	PostEventr9   )r[   r   r   s      r_   r   zNvizToolWindow.PostViewEvent   s    5)
T^^U+r`   c                 \    t        |      }t        j                  | j                  |       y)zChange light settingsrefreshN)r   rL   r   r9   )r[   r   r   s      r_   r   zNvizToolWindow.PostLightEvent   s    g.
T^^U+r`   c                     t        j                  | j                  | j                  | j                  | j
                  f       |j                          y)z)After window is resized, update scrollingN)rL   rX   r   foldpanelDatafoldpanelAppearfoldpanelAnalysisSkipr[   r   s     r_   rP   zNvizToolWindow.OnSize   s@     	  !5!5t7M7MN	
 	

r`   c                     |j                         j                         j                         }t        j                  | j
                  |f       |j                          y)z9When foldpanel item collapsed/expanded, update scrollbarsN)GetBarGetGrandParent	GetParentrL   rX   r   r   )r[   r   r   s      r_   OnPressCaptionzNvizToolWindow.OnPressCaption   s>    LLN113==?	
T))I<8

r`   c                     |D ]W  }|j                  dd      }|j                         j                  d|d   f       |j                         j                          Y y)zUpdate scrollbars in foldpanelr   )	collapsedexpandedr   r   N)GetPanelsLengthr   SetVirtualSizeLayout)r[   
foldpanelsr   lengths       r_   r   zNvizToolWindow.UpdateScrolling   s[    # 	+I..Q.GF!00#vay1AB!((*		+r`   c                 *   t        j                  | t        j                        }|j	                          d| j                         d| j                  d<   t        j                  t        j                        }t        |t        j                  dt        d      z        }t        j                  |t        j                        }t        j                  dd	
      }i | j                  d<   t        j                  dd
      }| j                  ||d       t        |d| j                         }|j                         | j                  d   d<   |j#                  |dt        j$                  t        j&                  z         |j#                  |d       t        d      }| j)                  || j                  d   d|d| j*                  | j,                  | j.                  f       |j#                  t1        |t        j                  t        d            dt        j$                         |j#                  | j3                  | j                  d   d   d         dt        j$                         |j#                  | j3                  | j                  d   d   d         dt        j$                         t        d      }| j)                  || j                  d   d |d!| j*                  | j,                  | j.                  f       |j#                  t1        |t        j                  t        d"            dt        j$                         |j#                  | j3                  | j                  d   d    d         d#       |j#                  | j3                  | j                  d   d    d         d$t        j$                         t        d%      }| j)                  || j                  d   d&d'|d(| j*                  | j,                  | j.                  f)       t        d*      }| j)                  || j                  d   d+d'|d,d-| j*                  | j,                  | j.                  f.       | j3                  | j                  d   d+   d         j5                  d/       | j3                  | j                  d   d+   d         j5                  d/       t        j                  dd
      }	|	j#                  t1        |t        j                  t        d0            dt        j6                  t        j&                  z  d12       |	j#                  | j3                  | j                  d   d&   d         t        j8                  d3       |	j#                  | j3                  | j                  d   d&   d         t        j&                  t        j6                  z  d3       |	j#                  t1        |t        j                  t        d4            d5t        j6                  t        j&                  z  d12       |	j#                  | j3                  | j                  d   d+   d         t        j8                  d13       |	j#                  | j3                  | j                  d   d+   d         t        j&                  t        j6                  z  t        j:                  z  t        j<                  z  t        j>                  z  d63       |j#                  |	d(t        j$                         t        j                  t        j@                        }
|
j#                  t1        |t        j                  t        d7            t        jB                  t        j&                  z  d8       tE        |t        j                  t        d9            }|jG                  t        jH                  | jJ                         |jM                  d9       |jO                  t        d:             |
j#                  |t        j:                  t        j<                  z  t        jP                  z  t        j&                  z  d8       tS        |t        j                  t        d;            }|jG                  t        jT                  | jJ                         |jM                  d;       |jO                  t        d<             |
j#                  |t        j:                  t        j<                  z  t        j&                  z  d8       tS        |t        j                  t        d=            }|jG                  t        jT                  | jJ                         |jM                  d=       |jO                  t        d>             |
j#                  |t        j:                  t        j<                  z  t        j&                  z  d8       tS        |t        j                  t        d?            }|jO                  t        d@             |jG                  t        jT                  | jV                         |
j#                  |dt        j:                  t        j<                  z  t        j>                  z  dA       |j#                  |
dBd6t        jX                  C       |j#                  |d/t        jB                  t        jX                  z  dDA       |j#                  |dt        jX                  t        jB                  z  dA       t        |t        j                  dt        dE      z        }t        j                  |t        j                        }t        j                  dd
      }i | j                  d   dF<   |j#                  t1        |t        j                  t        dG            dt        j&                         t[        j\                  |t        j                  t_        j`                  dHddFdIgJ      tb        jd                  K      }|j                         | j                  d   dF   dI<   |jG                  tZ        jf                  | jh                         |j#                  |d(       |jk                  d       |j#                  |d/t        jB                  t        jX                  z  dA       |j#                  |dt        jX                  t        jP                  z  t        j>                  z  dA       |jm                  |       |S )LCreate view settings pager5   r]   r   r]   notebookr3   r)   zControl Viewr5   r]   labelr'   
   vgaphgapr2   panelsizertype   r   )size	mapwindowr|   r    r    posflagr   r   r   zCAdjusts the distance and angular perspective of the image viewpointpersp)r    x   )r   nametooltiprangebindzPerspective:r]   r   r    r   sliderr   r   r,   r2   r   z2Tilts the plane of the surface from the horizontaltwist)iL   Tilt:r   r    r2   r    zvAdjusts the viewing height above the surface (angle of view automatically adjusts to maintain the same center of view)heightFr   r    )r   r   	sliderHorr   r   r   zFAdjusts the relative height of features above the plane of the surfacez-exag)r   r   T)r   r   r   r   r   floatSliderr   r    Height:r    r   r   r   spanr   r   zZ-exag:r   r   )r    r2   zLook:r   borderherez}Allows you to select a point on the surface that becomes the new center of view. Click on the button and then on the surface.centerz6Resets the view to the original default center of viewtopzkSets the viewer directly over the scene's center position. This top view orients approximately north south.resetzReset to default view
proportionr   r      r   r   r   r   r   zImage Appearance
backgroundzBackground color:r   colorr   ri   subkeyr]   colourr   )7SPr
   rL   ID_ANYSetupScrollingGetIdr+   BoxSizerVERTICALr   r@   StaticBoxSizerGridBagSizerr=   _createCompassViewPositionWindowr9   AddALIGN_CENTERALIGN_CENTER_VERTICAL_createControlOnViewChangeOnViewChangedOnViewChangedTextr   rv   rw   
ALIGN_LEFTALIGN_RIGHTTOPBOTTOMRIGHT
HORIZONTALALLr   rK   EVT_TOGGLEBUTTONOnLookAtSetName
SetToolTipLEFTr   
EVT_BUTTONOnResetViewEXPANDcselr   r	   r   r   DIALOG_COLOR_SIZEEVT_COLOURSELECT	OnBgColorAddGrowableColSetSizer)r[   r   	pageSizerboxboxSizer	gridSizerposSizerr3   r   heightSizer	viewSizerr   r   r   r   r   s                   r_   r?   zNvizToolWindow._createViewPage   sF
     ;#$$**,?		&KK,	u&AnDU:VW$$S"++6OO4	 ??2%xfE!%jDNNS'+zz|$TvBOOb>V>V,VWhF+ Q
 	&!##T%7%79O9OP 	 	
 	u!N2CD 	 	

 	 0 9( CD 	 	

 	 0 9& AB 	 	
 HI&!##T%7%79O9OP 	 	
 	u!G*= 	 	

 	 0 9( CD& 	 	
 	 0 9& AB 	 	
 Y
 	&!##T%7%79O9OP 	 	
 T
 	&!##T%7%79O9OP 	 		
 	DHHV,X6x@AJJ1MDHHV,X6v>?HHKoo115u!I,?!9!99	 	 	
 	 0 :8 DE 	 	

 	 0 :6 BC))BMM9 	 	

 	u!I,?!9!99	 	 	
 	 0 :8 DE 	 	

 	 0 :6 BC))mmff ii hh	
  	 	
 	kvBOOD KK.	u!G*="222 	 	

 EbiiqyA		"%%t}}5V?	
 	rvv		)BGG3b6N6NNWX 	 	
 "))1X;?BMM4==1x !TUV"))+b.F.FFq 	 	
 Uryy%9.E}	

 	c 2R5M5M MVWXu!G*=234

2==$"2"23e0BRXX0MVWXiV&ryyI 	Y1266BII3EaPh1299rvv3EaPRYYf:L8M.N
 $$S"++6OO3	 *,&e		;N9OP)) 	 	
 !!yy##&,1H ,,
 38++-&w/

4(($..9e(  #Y1266BII3EaPRWW)<rxx)GPQ 	 	
 	y!r`   c           
         t        j                  | t        j                        }|j	                          d| j                         d| j                  d<   t        j                  t        j                        }t        |t        j                  dt        d      z        }t        j                  |t        j                        }t        j                  t        j                        }i | j                  d<   t        |t        j                  t        d	            }|j                         | j                  d   d
<   |j                  |d       |j                  |dt        j                   t        j"                  z  d       t        j                  t        j                        }t%        |t        j                  dt        d            }t%        |t        j                  dt        d            }t%        |t        j                  dt        d            }	t%        |t        j                  dt        d            }
|j                         | j                  d   d<   |j                         | j                  d   d<   |	j                         | j                  d   d<   |
j                         | j                  d   d<   | j'                  || j                  d   ddd| j(                  d| j*                  f       | j-                  | j                  d   d   d         }| j-                  | j                  d   d   d         }t        |t        j                  t        d            }t        |t        j                        }|j                         | j                  d   d <   t        |t        j                  t        d!            }t/        |t        j                  d"t1        j2                  d#dd$%      dd&'      }|j                         | j                  d   d$<   |j5                  t        d(             |j7                  t        j8                  | j:                         |j7                  t        j8                  | j<                         |
j7                  t        j8                  | j>                         |	j7                  t        j8                  | j@                         |j7                  t        jB                  | jD                         |j                  |d       |j                  |d       |j                  |	d       |j                  |
d       |j                  |dt        j                   t        j"                  z  d)       t        j                  t        j                        }|j                  |ddt        j"                  t        jF                  z  *       |j                  |ddt        j"                  t        jF                  z  t        jH                  z  *       |j                  |dt        j"                  +       t        j                  t        j                        }|j                  |dt        jF                  d       |j                  |dt        jH                  d       |j                  |dt        j                   t        j"                  z  d       t        j                  t        j                        }|j                  |dt        jF                  t        jJ                  z  d       |j                  |dt        jH                  t        jJ                  z  d       |j                  |dt        jH                  t        jF                  z  t        jL                  z  t        j"                  z  d       |j                  |dt        j"                  t        jH                  z  t        jF                  z  t        jL                  z  d)       i | j                  d   d,<   i | j                  d   d,   d-<   t        |t        j                  dt        d.      z        }t        j                  |t        j                        }t        j                  t        j                        }t        jN                  dd/0      }tQ        jR                         }tU        jV                  |t        j                  t        d1      t        d2      t        d3      |4      }|jY                  |       t        |t        j                  t        d5            }t[        |t        j                  d6t1        j2                  d#dd7%      8      }|j5                  t        d9             t        |t        j                  t        d:            }t        j\                  |t        j                  d;d<g=      }t_        |t        j                  d>      }|j                         | j                  d   d,   d-   d?<   |j                         | j                  d   d,   d-   d7<   |j                         | j                  d   d,   d-   d@<   |j                         | j                  d   d,   d-   dA<   |j                  |dt        j                   t        j"                  z  d)       |j                  |dBt        jJ                  t        j`                  z  C       |j                  |dt        j"                  C       |j                  |dDt        jJ                  t        j`                  z  C       |j                  |dEt        j"                  C       |j                  |dt        j                   t        j"                  z  d       |j                  |dt        j                   t        jb                  z  d       |j7                  t        j8                  | jd                         |j                  |dt        j"                  t        jH                  z  t        jF                  z  t        jL                  z  d)       |jg                  |       |S )Fr   r   r   r   	animationr)   r0   r   animzPress 'Record' button and start changing the view. It is recommended to use fly-through mode (Map Display toolbar) to achieve smooth motion.helpr   r    r'   r   recordRecord)r5   r]   usager   playPlaypausePausestopStop
frameIndexr   FNr   r   r   r   r   r   r,   zTotal number of frames :infozFrame rate (FPS):A   r   fpsr   2   r5   r]   r   initialminmaxz0Frames are recorded with given frequency (FPS). r2   )r   r   r   r   r   saveimagezSave image sequencer   r   zChoose a directory:zChoose a directory for imagesBrowse)r5   r]   	labelTextdialogTitle
buttonTextstartDirectoryzFile prefix:r   r:  prefix)r5   r]   r   valuezJGenerated files names will look like this: prefix_1.ppm, prefix_2.ppm, ...zFile format:TIFPPMr5   r]   choicesSavedirformatconfirmr   r   r   r   )4r   r
   rL   r   r   r   r+   r   r   r   r@   r   r  r=   r   r  r  r  r   r  OnFrameIndexOnFrameIndexTextrv   r   r	   r   r  rK   r  OnRecordOnPlayOnStopOnPauseEVT_SPINCTRLOnFPSr  r  r  r  r  osgetcwd
filebrowseDirBrowseButtonrw   r   Choicer   r  r  OnSaveAnimationr  )r[   r   r   r!  r"  hSizerr*  r,  r/  r1  r3  frameSlider	frameText	infoLabelr7  fpsLabelr;  	sliderBoxvSizerr#  pwdrQ  prefixLabel
prefixCtrlfileTypeLabelfileTypeCtrlrB  s                              r_   rD   z#NvizToolWindow._createAnimationPage  s	     ;()tzz|!D		+KK,	u&AkN:ST$$S"++6R]]+yyB
 $(::< 

4A
&V0B1M R]]+RYYhak
 5RYYfAfIVRYYgQwZ
 5RYYfAfIV%+\\^"#'::< $)KKM!#'::< &!##T4+@+@A 	 	
 ))$((6*:<*H*RS''(8(Fv(NO	RYYa0J.K
	 2995#'::< UryyBU@VWyy $$6{5Q
 #&))+qKLMBMM4==1		"---		"---

2==$,,/$**-

6a
(

4A
&

5Q
'

4A
&V0B1MKK.	ka		BHH@TU!ABII4H2774R 	 	
 	Y1299= R]]+

9!
D

4ABGGA
>V0B1M R]]+

B4L4L)LUV 	 	
 	

31277R5M5M+MVW
X288#bii/"));	 	 	
 	RWW$rxx/"));	 	 	
 $& ,. )RYYf:O8P.Q
 $$S"++6R[[)OO4	iik((yy-.9:{
 	S "))1^CTUyy""[R	

 	\	

 #%BIIQ~EVWyy"))eU^TUryy?3699; )%06@6F6F6H )(36B6H6H6J )(37;zz| ))4SQRVVbii-?JV"*B*BR]]*R 	 	
 	jf299=vB,D,Dr}},T 	 	
 	lRYY?Y1266BII3EaPTabffr~~.EaP		"--!5!56RWW$rxx/"));	 	 	
 	y!r`   c                    t        |       | _        | j                  j                  d       	 t        j                  | j                  t
        j                  t        j                  t        j                        | _	        | j                  j                  t        j                  | j                         | j                  j                  t        d      d      }| j                  j                  || j!                  |      t        j"                  	       | j%                  d
d       | j                  j                  t        d      d      }| j                  j                  || j'                  |      t        j"                  	       | j%                  dd       | j                  j                  t        d      d      }| j                  j                  || j)                  |      t        j"                  	       | j%                  dd       | j                  j                  t        d      d      }| j                  j                  || j+                  |      t        j"                  	       | j%                  dd       t        j,                  t
        j.                        }|j1                  | j                  dt
        j2                         | j                  j5                  |       | j                  j7                          | j                  j9                          | j                  S #  	 t        j                  | j                  t
        j                  t        j                        | _	        nJ#  t        j                  | j                  t
        j                  t        j                        | _	        Y nxY wY FxY w)3Create data (surface, vector, volume) settings pager5   Fscroll_xr5   r]   r(   
extraStyler5   r]   agwStyler5   r]   r(   Surfacer   windowflagsrm   enabledConstant surfaceTconstantVectorrc   z	3D rasterrp   r    rA  )r
   mainPanelDatar   fpbFoldPanelBarrL   r   FPB_DEFAULT_STYLEFPB_SINGLE_FOLDr   rK   EVT_CAPTIONBARr   AddFoldPanelr@   AddFoldPanelWindow_createSurfacePageFPB_ALIGN_WIDTH
EnablePage_createConstantPage_createVectorPage_createVolumePager   r   r  r  r  r   Fit)r[   surfacePanelconstantPanelvectorPanelvolumePanelr   s         r_   rA   zNvizToolWindow._createDataPage  s   *$7))5)9	!$!1!1))99++..	"D$ 	 2 2D4G4GH ))66q|u6U--**,*?%% 	. 	

 		51 **77 !T 8 
 	--++=+A%% 	. 	

 	
E2((55akT5R--)))=%% 	. 	

 	%0 ((55anPT5U--)))=%% 	. 	

 	%0 BKK(		$$$	C##E*!!# !!!w
		%(%5%5--yy 00&"
%(%5%5--"))3CVCV&"s&   AL3 3O6AM:9O:AO?Oc                 \   t        |       | _        | j                  j                  d       	 t        j                  | j                  t
        j                  t        j                  t        j                        | _	        | j                  j                  t        j                  | j                         | j                  j                  t        d      d      }| j                  j                  || j!                  |      t        j"                  	       | j                  j                  t        d
      d      }| j                  j                  || j%                  |      t        j"                  	       | j'                  dd       | j                  j                  t        d      d      }| j                  j                  || j)                  |      t        j"                  	       t        j*                  t
        j,                        }|j/                  | j                  dt
        j0                         | j                  j3                  |       | j                  j5                          | j                  j7                          | j                  S #  	 t        j                  | j                  t
        j                  t        j                        | _	        nJ#  t        j                  | j                  t
        j                  t        j                        | _	        Y nxY wY xY w)ro  rp  Frq  rs  ru  rw  Lightingry  rz  FringeTro   Decorationsr    rA  )r
   mainPanelAppearr   r  r  rL   r   r  r  r   rK   r  r   r  r@   r  _createLightPager  _createFringePager  _createDecorationPager   r   r  r  r  r   r  )r[   
lightPanelfringePaneldecorationPanelr   s        r_   rB   z$NvizToolWindow._createAppearancePage  s~   ,D9++U+;	#&#3#3++99++..	$D $ 	!!#"4"4d6I6IJ))66q}PU6V
//((
(;%% 	0 	
 **77(t7T//)))=%% 	0 	
 	%( ..;;m < 
 	//--_-E%% 	0 	
 BKK(		$&&1299	E%%e,##%  "###]
		'*'7'7//yy 00($
'*'7'7//BIISEXEX($s&   AJ L+AKL+AL%#L+c                 b   t        |       | _        | j                  j                  d       t        j                  | j                  t
        j                  t        j                        | _        | j                  j                  t        j                  | j                         | j                  j                  t        d      d      }| j                  j                  || j                  |      t        j                          t        j"                  t
        j$                        }|j'                  | j                  dt
        j(                  	       | j                  j+                  |       | j                  j-                          | j                  j/                          | j                  S )
z/Create data analysis (cutting planes, ...) pagerp  Frq  rw  Cutting planesry  rz  r    rA  )r
   mainPanelAnalysisr   r  r  rL   r   r  r   rK   r  r   r  r@   r  _createCPlanePager  r   r   r  r  r  r   r  )r[   cplanePanelr   s      r_   rC   z"NvizToolWindow._createAnalysisPage  sF   !.d!;--u-=!$!1!1))biis?R?R"
 	##C$6$68K8KL,,995 : 
 	11)))=%% 	2 	
 BKK(		$((QRYY	G''.%%'""$%%%r`   c                 %   t        |      }d| j                  j                         d| j                  d<   t	        j
                  t        j                        }i | j                  d<   t        |t        j                  dt        d      z        }t	        j                  |t        j                        }t        |d| j                  	      }|j                         d   j                  t        j                   | j"                         |j                         | j                  d   d
<   t%        |t        j                        }|j                         | j                  d   d<   |j'                  |dt        j(                  d       |j'                  |dt        j(                  d       |j'                  |dt        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       i | j                  d   d<   t        |t        j                  dt        d      z        }t	        j                  |t        j                        }t	        j2                  dd      }|j'                  t%        |t        j                  t        d            dt        j4                         t	        j6                  |t        j                  dt        d      t        d      t        d      g      }	|	j9                  d       |	j                  t        j:                  | j<                         |	j                         | j                  d   d   d<   |j'                  |	t        j4                  t        j*                  z  dd       |j'                  t%        |t        j                  t        d            d t        j4                  t        j>                  z         t	        j6                  |t        j                  dt        d!      t        d"      g      }
|
j9                  d       |
j                         | j                  d   d   d#<   |
j                  t        j:                  | j<                         |j'                  |
t        j4                  d$%       tA        |t        j                  t        d&      '      }|jC                  t        d(             |j                  t        jD                  | jF                         |j'                  |t        j(                  t        j4                  z  t        j*                  z  d)%       |j                         | j                  d   d*<   |j'                  t%        |t        j                  t        d+            d,t        j4                         |j'                  t%        |t        j                  t        d-            d.t        j4                         tI        |t        j                  d/d0d1d23      }|j9                  d4       |j                         | j                  d   d   d5<   |j                  t        jJ                  | jL                         |j'                  |d6t        j4                  t        j>                  z         |j'                  t%        |t        j                  t        d7            d8t        j4                         t	        j6                  |t        j                  d9t        d:      t        d      g      }|j9                  d       |j                         | j                  d   d   d;<   |j                  t        j:                  | j<                         |j'                  |t        j4                  d<%       tO        |t        j                  tP        jR                  =      }|j9                  d>       |j                  tT        jV                  | jX                         |jC                  t        d?             |j                         | j                  d   d   d@<   |j'                  |t        j4                  t        jZ                  z  dA%       |j'                  t%        |t        j                  t        dB            dCt        j4                         |j'                  t%        |t        j                  t        d-            dDt        j4                         tI        |t        j                  d/dd1d23      }|j9                  d4       |j                         | j                  d   d   dE<   |j                  t        jJ                  | jL                         |j'                  |dt        j4                  t        j>                  z         |j]                  d       |j'                  |d1t        j(                  t        j*                  z  d       |j'                  |dt        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       t        |t        j                  dt        dF      z        }t	        j                  |t        j                        }t	        j2                  dd      }i | j                  d   dG<   d}dHt        dI      fdJt        dK      fdLt        dM      fdNt        dO      ffD ]  \  }}i | j                  d   |<   |j'                  t%        |t        j                  |dPz         |dft        j4                         t	        j6                  |t        j                  d9t        d
      g      }|dQvr2|j_                  t        dR      dS       dT| j                  d   |   dU<   ndV| j                  d   |   dU<   |dJk7  r|ja                  t        dW      X       |j                         | j                  d   |   dY<   |j                  t        j:                  | jb                         |j'                  |t        j4                  |d1f%       t        |t        j                  ddZ      }tQ        jd                  dg      r$|j                         | j                  d   |   d
<   n1|jg                         j                         | j                  d   |   d
<   |j                  t        j                   | jh                         |j'                  |t        j4                  t        j*                  z  |d[f%       |dHk(  rztk        jl                  d\ddHd4g]      }tU        jN                  |t        j                  |tP        jR                  ^      }|j                  tT        jV                  | jh                         nb|dJk(  rd_}nZtI        |t        j                  d/d`      }|jo                  dd2a       |j                  t        j                   | jh                         |rY|j                         | j                  d   |   db<   |jq                  dT       |j'                  |t        j4                  |df%       nd_| j                  d   |   db<   | js                  d|c       |d1z  } |j]                  d[       |j'                  |dt        j(                  t        j*                  z  d       |j'                  |dt        j*                  t        j(                  z  d       i | j                  d   dd<   t        |t        j                  dt        de      z        }t	        j                  |t        j                        }t	        j2                  dd      }t        df      }| ju                  || j                  d   dd|dgdV| jv                  | jx                  | jz                  fh       t	        j6                  |t        j                  dig dj      }tA        |t        j                  t        dk      '      }|jC                  t        dl             |j                  t        jD                  | j|                         |j                         | j                  d   dd   dm<   |j                         | j                  d   dd   dn<   |j                  d[       |j                  t        j:                  | j                         | j                  | j                  d   dd   do         }| j                  | j                  d   dd   dp         }|j                  dq       |j'                  |t        j4                  d%       |j'                  |t        j4                  d%       |j'                  |t        j4                  dr%       |j'                  |t        j4                  t        j>                  z  d %       |j]                  d       |j'                  |d1t        j(                  t        j*                  z  d       |j'                  |d1t        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       |j                  |       |j                          |j                          |j                  dTs       |S )tr   rp  r   r   rm   r)   z
Raster mapr   rb   r5   r   onPopuprn   r   descr2   r   drawDrawr   Mode:r   r   r:  r:  coarsefinebothr5   r]   r   rO  rz   moder   r   r   r   r   Shading:r   r2   flatgouraudshadingr   r   r   z
Set to allr   z)Use draw settings for all loaded surfaces)r2   r   allzCoarse mode:r   zresolution:r   r8     r    r   r=  rK  
res-coarser   r   zstyle:r   rI  wirer(   r2   r   r]   r   r   zChange wire color
wire-color)r2   r2   z
Fine mode:r   r   res-finezSurface attributesattrr   ColormaskMasktranspTransparencyshine	Shininess:)r   r  unsetitemr   FrequiredTr  r  user5   r]   r   r   r   r   r   r   Nr5   r]   r   r>  minValmaxValconstnvizTypeattrbr|   Positionz7Changes the x, y, and z position of the current surfacei'  )r   r   r   r   r   r   K   r:  XYZResetReset to default positionr   axisr   r,   0r   scroll_y)Gr
   r   r   r+   rL   r   r   r=   r   r   r@   r   r   GselectOnPopupr   rK   EVT_TEXTOnSetRasterr   r  r  r  r  r  r  r  r  r`  r  
EVT_CHOICEOnSurfaceModer  r   r  r  OnSurfaceModeAllr   rZ  OnSurfaceResolutionr   r   r  r  r  OnSurfaceWireColorr  r  InsertAppendOnMapObjUseCheckWxVersionGetTextCtrlOnSurfaceMapr	   r   SetRangeEnableSetMapObjUseMapr  OnSurfacePositionOnSurfacePositionChangedOnSurfacePositionTextOnResetSurfacePositionSetSelectionOnSurfaceAxisrv   rw   r  r   r  r   )r[   r5   r   r   r!  r"  rmapsr  r#  r  shader  resCr(   r   resFrowcoder  r  rn   rK  r   r  r   pslideptexts                              r_   r  z!NvizToolWindow._createSurfacePage4  sF   V,&'T5G5G5M5M5OP		)KK,	  u&AlO:TU$$S"++6e(D<O<OPA##BKK1A1AB%*[[]E"2995&*jjlF#Uqrvva@TabffQ?RWW$rxx/"));	 	 	
 ')F#u&AfI:NO$$S"++6OO3	 	e		7D)) 	 	

 yyyyx[!F)QvY7	
 	[!		"--!3!34.2jjlF#F+r//"));f 	 	

 	e		:G))BNN: 	 	

 		RYYX&	1Y<?X
 	k"16F#I.

2==$"4"45e"":":G Uryy,@qDEF 5 56bffr777"))C 	 	
 &)YY[E" 	e		>9JK)) 	 	

 	e		=9IJ)) 	 	

 RYYXqaS
 	W48JJLF#L1		"//4#;#;<dR-E-E-VW 	e		8E)) 	 	

 		yyvY)-	
 	k"/4{{}F#G,

2==$"4"45e"":":G Uryyy7R7RSh

4(($*A*AB./049KKMF#L1e"":":R]]"JPVW 	e		<I)) 	 	
 	e		=9IJ)) 	 	

 RYYXqaS
 	W26**,F#J/		"//4#;#;<dR-E-E-VW  #Y1266BII3EaPRWW$rxx/"));	 	 	
 RYYf:N8O.P
 $$S"++6OO3	 ')F#aj!QvYq()an%	
 B	KD% )+DHHY%MM%BIIUS[I!H--  
 ))QuXJC --

'

28=#D)*58<#D)*5v~

*
./2yy{DHHY%e,HHR]]D$4$45MM#B$<$<3(MK99C '',3699;#D)%036??3D3J3J3L#D)%0HHR[[$"3"34MM#B$<$<ryy$HsTUhMWw$(( i'8J ))biiI<W<W 

400$2C2CD "))(TUVa4

2;;(9(9:5:[[]#D)'2U#e"*B*BaQ59#D)'2   )4 @1HCEB	F 	  #Y1266BII3EaPh1299rvv3EaP +-J'u&AjM:RS$$S"++6OO3	 MN)$!&&--** 	 	
 yyRYYX
 u!G*=678

2==$"="=>38;;=J'026**,J'/!		"--!3!34$$TXXi%8%DX%NO##DHHY$7
$CF$KLsd!9!9vFf2#;#;He"":":Ge"":":R^^"KQWX  #Y1266BII3EaPRWW$rxx/"));	 	 	
D 	y!		e,r`   c                 d   t        |      }d| j                  j                         d| j                  d<   i | j                  d<   t        j                  t
        j                        }t        |t
        j                  dt        d      z        }t        j                  |t
        j                        }t        j                  t
        j                        }|j                  t        |t
        j                  t        d            t
        j                  t
        j                   z  d	
       t        j"                  |t
        j                  g       }|j                         | j                  d   d<   |j%                  t
        j&                  | j(                         |j                  |t
        j                   d	
       |j                  t        j*                  dd      d       |j                  t        |t
        j                  t        d            t
        j                  t
        j                   z  d	
       t        d      t        d      t        d      t        d      t        d      g}t        j"                  |t
        j                  |      }|j                         | j                  d   d<   |j%                  t
        j&                  | j,                         |j                  |t
        j                   d	
       |j                  |t
        j.                         t        j0                  d	d	      }	i | j                  d   d<   |	j                  t        |t
        j                  t        d            dt
        j                         t        d      }
| j3                  || j                  d   d   ddd d!d!|
| j4                  | j6                  | j8                  f"	       | j;                  | j                  d   d   d   d#         j=                  d$       | j;                  | j                  d   d   d   d%         j=                  d$       |	j                  | j;                  | j                  d   d   d   d#         d&t
        j.                  t
        j>                  z         |	j                  | j;                  | j                  d   d   d   d%         d't
        j@                         |	j                  t        |t
        j                  t        d(            d)t
        j                         t        d*      }
| j3                  || j                  d   d   d+dd d!d!|
| j4                  | j6                  | j8                  f"	       | j;                  | j                  d   d   d+   d#         j=                  d$       | j;                  | j                  d   d   d+   d%         j=                  d$       |	j                  | j;                  | j                  d   d   d+   d#         d,t
        j.                  t
        j>                  z         |	j                  | j;                  | j                  d   d   d+   d%         d-t
        j@                         i | j                  d   d.<   |	j                  t        |t
        j                  t        d/            d0t
        j                         t        d1      }
| j3                  || j                  d   d.   d2dd3d!|
| j4                  | j6                  | j8                  f4       | j;                  | j                  d   d.   d2   d#         j=                  d5       | j;                  | j                  d   d.   d2   d%         j=                  d5       |	j                  | j;                  | j                  d   d.   d2   d#         d6t
        j.                  t
        j>                  z         |	j                  | j;                  | j                  d   d.   d2   d%         d7t
        j@                         |	j                  t        |t
        j                  t        d8            d9t
        j                         t        d:      }
| j3                  || j                  d   d.   d;dd3d!|
| j4                  | j6                  | j8                  f4       | j;                  | j                  d   d.   d;   d#         j=                  d$       | j;                  | j                  d   d.   d;   d%         j=                  d$       |	j                  | j;                  | j                  d   d.   d;   d#         d<t
        j.                  t
        j>                  z         |	j                  | j;                  | j                  d   d.   d;   d%         d=t
        j@                         |	j                  t        |t
        j                  t        d>            d?t
        j                         t        d@      }
| j3                  || j                  d   d   dAdd d!|
| j4                  | j6                  | j8                  f4       | j;                  | j                  d   d   dA   d#         j=                  d$       | j;                  | j                  d   d   dA   d%         j=                  d$       |	j                  | j;                  | j                  d   d   dA   d#         dBt
        j.                  t
        j>                  z         |	j                  | j;                  | j                  d   d   dA   d%         dCt
        j@                         |j                  |	d$t
        j.                  t
        j                   z  d	D       t        j                  t
        j                        }|j                  t        j*                  dd      dt
        j                   d	D       tC        |t
        j                  t        dE            }|j                         | j                  d   dF<   |j%                  t
        jD                  | jF                         |j                  |t
        j                   d	
       |j                  |d$t
        j.                  G       |j                  |d$t
        j.                  G       |jI                  |       |jK                          |jM                  dHI       |S )JzCreate cutting planes pagerp  r   r   cplaner)   r  r   zActive cutting plane:r'   r   rN  planesr:  r    r+  r  clearz	top colorzbottom colorblendshadedr  r   r   r   r|   zHorizontal X:r   r   z2Sets the X coordinate of the current cutting planex   )ii  T)r   r   r   r   r   r   r   r   r   r   r,   r   r   zHorizontal Y:r   z2Sets the Y coordinate of the current cutting planeyr   r   rotationz	Rotation:r   z5Rotates the current cutting plane about vertical axisrot)r   ih  )r   r   r   r   r   r   r   r   r   r  r   r   z7Rotates the current cutting plane about horizontal axistiltr   r  r   r   zWSets the Z coordinate of the current cutting plane (only meaningful when tilt is not 0)zr   r    )r   r   r   r  r   rA  Fr  )'r
   r   r   r+   r=   rL   r   r   r   r   r@   r   r  r  r   r  r  r`  rK   r  OnCPlaneSelectionSizeOnCPlaneShadingr  r  r  OnCPlaneChangingOnCPlaneChangeDoneOnCPlaneChangeTextrv   rw   r  r  r   r  OnCPlaneResetr  r  r   )r[   r5   r   r   r!  r"  horSizerchoicerO  r#  r   r   s               r_   r  z NvizToolWindow._createCPlanePageu  s-   V,%&D4F4F4L4L4NO		(KK,	RYYf:J8K.L
 $$S"++6;;r}}- 	e		;R9ST))BFF2 	 	

 %BIIrB'-||~8$BMM4#9#9:V"&&3 	RWWR_3e		:G))BFF2 	 	
 gJkNngJhK
 %BIIwG(.9%BMM4#7#78V"&&3XBII.OO3	 *,:&e		?9KL)) 	 	

 HI(#J/%%'''' 	 	
 	DHHX.z:3?IJSSTUVDHHX.z:3?GHQQRST 2: >s CH MNR^^+ 	 	

 	 2: >s CF KL 	 	
 	e		?9KL)) 	 	

 HI(#J/%%'''' 	 	
 	DHHX.z:3?IJSSTUVDHHX.z:3?GHQQRST 2: >s CH MNR^^+ 	 	

 	 2: >s CF KL 	 	
 *,:&e		;H)) 	 	

 KL(#J/%%'''' 	 	
 	DHHX.z:5A(KLUU	
 	DHHX.z:5A&IJSSTWX 2: >u Eh OPR^^+ 	 	

 	 2: >u Ef MN 	 	
 	e		7D)) 	 	

 MN(#J/%%'''' 	 	
 	DHHX.z:6B8LMVV	
 	DHHX.z:6B6JKTTUVW 2: >v Fx PQR^^+ 	 	

 	 2: >v Fv NO 	 	
 	e		9F)) 	 	

 e
 	(#J/%%'''' 	 	
 	DHHX.z:3?IJSSTUVDHHX.z:3?GHQQRST 2: >s CH MNR^^+ 	 	

 	 2: >s CF KL 	 	
 	Y1299rvv3EaP;;r}}-RWWR_Je		7D&+kkm7#

2==$"4"45U2X!"))<h1299=y!		e,r`   c           	         t        |      }d| j                  j                         d| j                  d<   i | j                  d<   t        j                  t
        j                        }t        |t
        j                  dt        d      z        }t        j                  |t
        j                        }t        j                  t
        j                        }t        j                  |t
        j                  t
        j                  t
        j                  z  g       }|j                         | j                  d   d	<   |j!                  t
        j"                  | j$                         |j'                  |dt
        j(                  t
        j*                  z  d
       t-        |t
        j                  t        d            }|j!                  t
        j.                  | j0                         |j                         | j                  d   d<   t-        |t
        j                  t        d            }	|	j!                  t
        j.                  | j2                         |	j                         | j                  d   d<   |j'                  |dt
        j*                  t
        j4                  z  d       |j'                  |	dt
        j*                  t
        j4                  z  d       |j'                  |dt
        j6                  t
        j(                  z  d       t        j8                  dd      }
|
j'                  t;        |t
        j                  t        d            dt
        j<                         t?        |t
        j                  dddd      }|jA                  d       |j                         | j                  d   d<   |j!                  t
        jB                  | jD                         |
j'                  |dt
        j<                  t
        jF                  z         |
j'                  t;        |t
        j                  t        d            dt
        j<                         t?        |t
        j                  d d!d"      }|j                         | j                  d   d<   |j!                  t
        jB                  | jD                         |
j'                  |d#$       |
j'                  t;        |t
        j                  t        d%            d&t
        j<                         t?        |t
        j                  ddd"      }|j                         | j                  d   d'<   |j!                  t
        jB                  | jD                         |
j'                  |d($       |
j'                  t;        |t
        j                  t        d)            d*t
        j<                         tI        jJ                  |t
        j                  d+tL        jN                  ,      }|j                         | j                  d   d-<   |j!                  tH        jP                  | jD                         |
j'                  |d.$       |j'                  |
dt
        j6                  d       |j'                  |dt
        j(                  t
        j6                  z  d       |jS                  |       |jU                          |jW                  d/0       |S )1zCreate constant pagerp  r    r   r  r)   r  r   )r5   r]   r(   rO  rm      r   Newr   r   Deletedeleter   r2   r'   r  zFine resolution:r   r   r8  r   r=  rK  
resolutionr   zValue:r       e    eA)r]   r?  r@  r   r   r   Transparency:r   r  r   Color:r   r   r   r   r   r   r   Fr  ),r
   r   r   r+   r=   rL   r   r   r   r   r@   r   r  ComboBox	CB_SIMPLECB_READONLYrK   EVT_COMBOBOXOnConstantSelectionr  r  r  r   r  OnNewConstantOnDeleteConstantr  r  r  r   r  r   r  rZ  OnSetConstantPropr  r  r   r   r  r  r  r  r   )r[   r5   r   r   r!  r"  horsizerrm   addNewr%  r#  r  rK  r  r   s                  r_   r  z"NvizToolWindow._createConstantPagej  s   V,'(d6H6H6N6N6P Q		*!KK,	RYYf:L8M.N
 $$S"++6;;r}}-++RYYbllR^^.KUW
 +2--/Y'R__d&>&>?WRXX1EbQ"))1U8<BMM4#5#56&,llnU#"))1X;?BMM4#8#89)/X&V2770B1MV2770B1MX!"&&2992DQOOO3	e		;M9NO)) 	 	

 RYYXqaS
 	W-1ZZ\\*		"//4#9#9:dR-E-E-VWe		8E)) 	 	
 299$ChO(-W%

2??D$:$:;e( 	e		?9KL)) 	 	
 %BII1#HM)/X&BOOT%;%;<f&) 	e		8E)) 	 	

 !!bii		8S8S
 ).W%

4(($*@*@Ae(Y1266!Dh1299rvv3EaPy!		e,r`   c                 5   t        |      }d| j                  j                         d| j                  d<   t	        j
                  t        j                        }i | j                  d<   t        |t        j                  dt        d      z        }t	        j                  |t        j                        }t        |d| j                        }|j                         d	   j                  t        j                   | j"                         |j                         | j                  d   d
<   t%        |t        j                        }|j                         | j                  d   d<   |j'                  |d	t        j(                  d       |j'                  |d	t        j(                  d       |j'                  |d	t        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       i | j                  d   d<   t	        j2                  |t        j                  t        d            }|j5                  d       |j                         | j                  d   d   d<   |j                  t        j6                  | j8                         |j'                  |d	t        j,                  t        j.                  z  t        j0                  z  t        j*                  z  d       t        |t        j                  dt        d      z        }t	        j                  |t        j                        }t	        j:                  dd      }	|	j'                  t%        |t        j                  t        d            dt        j<                         |	j'                  t%        |t        j                  t        d            dt        j<                  t        j>                  z         tA        |t        j                  dddd      }
|
j5                  d       |
j                         | j                  d   d   d<   |
j                  t        jB                  | jD                         |	j'                  |
d t        j<                  t        jF                  z         |	j'                  t%        |t        j                  t        d!            d"t        j<                  t        j>                  z         tI        jJ                  |t        j                  d#tL        jN                  $      }|j                         | j                  d   d   d%<   |j                  tH        jP                  | jD                         |	j'                  |d&t        j<                  t        jF                  z         i | j                  d   d   d'<   t	        j2                  |t        j                  t        d(            }t	        j2                  |t        j                  t        d)            }|j                         | j                  d   d   d'   d*<   |j                         | j                  d   d   d'   d+<   |j                  t        j6                  | jR                         |j                  t        j6                  | jR                         |j5                  d,       |j5                  d,       t	        j
                  t        j                        }t	        j
                  t        jT                        }|j'                  |t        j<                  d-       tW        |t        j                  t        d.            }|j                         | j                  d   d   d'   d/<   |j                  t        jX                  | jZ                         |j'                  t	        j\                  d0d0      d1       |j'                  |t        j<                  t        j,                  z  dd	2       |j'                  |t        j*                  3       t	        j
                  t        jT                        }|j'                  |t        j<                  d-       tW        |t        j                  t        d.            }|j                         | j                  d   d   d'   d4<   |j                  t        jX                  | jZ                         |j'                  t	        j\                  d0d0      d1       |j'                  |t        j<                  t        j,                  z  dd	2       |j'                  |t        j*                  3       |	j'                  |t        j<                  t        j*                  z  d5d67       |	j'                  t%        |t        j                  t        d8            d9t        j<                  t        jF                  z         t	        j^                  |t        j                  d:t        d;      t        d<      g=      }|j                         | j                  d   d   d><   |j                  t        j`                  | jb                         |	j'                  |t        j<                  t        jF                  z  t        j*                  z  d?d@7       |	j'                  t%        |t        j                  t        dA            dBt        jd                  t        j*                  z         tg        |t        j                  dCg t        jh                  D      }|j                  t        jj                  | jl                         |j                         | j                  d   d   dE<   |	j'                  |dFdBt        j<                  t        j*                  z  G       | jo                  || j                  d   d   dHd0dId| jp                  | jr                  | jt                  fJ       | jw                  | j                  d   d   dH   dK         j5                  d	       | jw                  | j                  d   d   dH   dL         j5                  d	       |	j'                  | jw                  | j                  d   d   dH   dK         dMt        j*                  t        j>                  z         |	j'                  | jw                  | j                  d   d   dH   dL         dNt        jx                         |	j{                  d       |j'                  |	dt        j(                  t        j*                  z  d       |j'                  |d	t        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       i | j                  d   dO<   t	        j2                  |t        j                  t        dP            }|j5                  d       |j                         | j                  d   dO   d<   |j                  t        j6                  | j8                         |j'                  |d	t        j,                  t        j.                  z  t        j0                  z  t        j*                  z  d       t        |t        j                  dt        dQ      z        }t	        j                  |t        j                        }t	        j
                  t        j                        }t	        j:                  dd      }	|	j'                  t%        |t        j                  t        dR            dt        j<                         |	j'                  t%        |t        j                  t        dS            dt        j<                  t        j>                  z         t|        rt}        j~                  |t        j                  d	dTddt|        j                  U      }|j                  dV       |j                  d       |j                  t|        j                  | j                         nItA        |t        j                  ddddT      }|j                  t        jB                  | j                         |j                  dW       |j5                  d       |j                         | j                  d   dO   dX<   |	j'                  |d t        j<                  t        jF                  z         |	j'                  t%        |t        j                  t        d!            d"t        j<                  t        j>                  z         tI        jJ                  |t        j                  tL        jN                  Y      }|j                  d%       |j                  dZ       |j                         | j                  d   dO   d%<   |j                  tH        jP                  | j                         |	j'                  |t        j<                  t        jF                  z  d&[       |	j'                  t%        |t        j                  t        d\            d]t        j<                  t        j>                  z         t	        j^                  |t        j                  d^t        j                  d_ddOd`gdab      =      }|j                  dc       |j                         | j                  d   dO   d`<   |j                  t        j`                  | j                         |	j'                  |t        j<                  t        jF                  z  dd[       i | j                  d   dO   d'<   t	        j2                  |t        j                  t        d(            }t	        j2                  |t        j                  t        de            }|j                         | j                  d   dO   d'   d*<   |j                         | j                  d   dO   d'   df<   |j                  t        j6                  | jR                         |j                  t        j6                  | jR                         |j5                  d,       |j5                  d,       |	j'                  |t        j<                  t        jF                  z  d5d67       tW        |t        j                  t        d.            }|j                         | j                  d   dO   d'   d/<   |j                  t        jX                  | jZ                         |	j'                  |t        j<                  dg[       |	j'                  |t        j<                  t        jF                  z  d?d67       tW        |t        j                  t        d.            }|j                         | j                  d   dO   d'   dh<   |j                  t        jX                  | jZ                         |	j'                  |t        j<                  di[       |	j{                  d	       |	j{                  d       |	j{                  dj       |	j{                  dk       |j'                  |	d	t        j*                  d	       t	        j:                  dd      }	|	j'                  t%        |t        d8      l      dt        j<                  t        jF                  z         t	        j^                  |      }|j                         | j                  d   dO   d><   |j                  t        j`                  | j                         |	j'                  |dt        j<                  t        j*                  z         |	j'                  t%        |t        j                  t        dA            dmt        j<                         tg        |t        j                  dCg t        jh                  D      }|j                  t        jj                  | jl                         |j                         | j                  d   dO   dE<   |	j'                  |dndot        j<                  t        j*                  z  G       | jo                  || j                  d   dO   dHd0dI| jp                  | jr                  | jt                  fp       | jw                  | j                  d   dO   dH   dK         j5                  d	       | jw                  | j                  d   dO   dH   dL         j5                  d	       |	j'                  | jw                  | j                  d   dO   dH   dK         dqt        j*                  t        j<                  z         |	j'                  | jw                  | j                  d   dO   dH   dL         dot        jx                         |	j{                  d       |j'                  |	d	t        j*                  d	       |j'                  |dt        j(                  t        j*                  z  d       |j'                  |d	t        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       |j                  |       |j                          |j                  d,r       |S )sr   rp  r   r   rc   r)   z
Vector mapr   r  r   rn   r   r  r2   r   lineszShow vector linesTshowr'   zVector linesr   zLine:r   r   zwidth:r   r8  r    r   r=  widthr   zcolor:r  r+  r   r   r  thematiczuse color for thematic mappingzuse width for thematic mapping
checkcolor
checkwidthFr   zSet options...buttoncolorr:  r+  )r   r   r   r  buttonwidthr   )r    r'   r  Displayr   r  on surface(s):as 3Dr  3dr   )r    r   zHeight above surface:)r2   r'   )r:  <   )r5   r]   r   rO  r(   rm   r   r   r   )r   i  )r   r   r   r   r   r   r   r,   )r   r'   )r'   r'   pointszShow vector pointszVector pointszIcon:zsize:    .A)r5   r]   min_valmax_val	incrementrK  r(   z%frK  r   r  )r   r      r   zsymbol:r   r'   rI  r   markerinternal)r   ri   r   settings_typerz   )r   r  zuse size for thematic mapping	checksizer    r  
buttonsize)r   r  r   r  )r5   r   r   r   r  )r   r   r   r   r   r  r  )Mr
   r   r   r+   rL   r   r   r=   r   r   r@   r   r   r  r   rK   r  OnSetVectorr   r  r  r  r  r  r  CheckBoxrw   EVT_CHECKBOXOnVectorShowr  r  r  r   rZ  OnVectorLinesr  r  r   r   r  r  OnCheckThematicr  r   r  OnSetThematicr  r`  r  OnVectorLinesModeALIGN_BOTTOMr   LB_NEEDED_SBEVT_CHECKLISTBOXOnVectorSurfacer  OnVectorHeightOnVectorHeightFullOnVectorHeightTextrv   r  r  fs	FloatSpinFS_RIGHT	SetFormat	SetDigitsEVT_FLOATSPINOnVectorPointsr  	SetColourr	   r   OnVectorPointsModer  r  r   )r[   r5   r   r   r!  r"  vmapsr  	showLinesr#  r9  r   checkThematicColorcheckThematicWidthrh  rb  setThematicr\   rm   
showPoints	vertSizerisizeicolorisymcheckThematicSizes                            r_   r  z NvizToolWindow._createVectorPage  sp   V,%&D4F4F4L4L4NO		(KK,	 u&AlO:TU$$S"++6e(D<O<OPA##BKK1A1AB$)KKM5!2995%)ZZ\6"Uqrvva@TabffQ?RWW$rxx/"));	 	 	
 ')7#KKRYYa0C.D
	 	4 .7oo.?7#F+r(9(9:288#bii/"));	 	 	
 u&AnDU:VW$$S"++6OO3	 	e		7D)) 	 	

 	e		8E))BNN: 	 	
 RYYXqaS
 	q/4{{}7#G,

2??D$6$67eb.F.F.VW 	e		8E))BNN: 	 	
 !!bii		8S8S
 05{{}7#G,

4(($*<*<=eb.F.F.VW 357#J/[[RYYa0P.Q
  [[RYYa0P.Q

 $$& 	7#J/	

 $$& 	7#J/	
 	1E1EF1E1EF##E*##E*R[[)R]]+

%B,D,DQ
OEbiiqAQ?RSALARARAT7#J/>(:(:;

2772r?q
1

b66@WX 	 	
 	

6		
*R]]+

%B,D,DQ
OEbiiqAQ?RSALARARAT7#J/>(:(:;

2772r?q
1

b66@WX 	 	
 	

6		
*11BII=6PV 	 	

 	e		9F))BMM9 	 	
 ))yy'(!G*5	
 -4MMO7#D)R]]D$:$:;))BMM9BIIE	 	 	
 	e		;R9ST299, 	 	
 RYYXr
 	R(($*>*>?187#I.f23K3Kbii3W 	 	
 	(#G,##'''' 	 	
 	DHHX.w7A(KLUUVWXDHHX.w7A&IJSSTUV 27 ;H Eh OPR^^+ 	 	

 	 27 ;H Ef MN 	 	

 	  #Y1266BII3EaPRWW$rxx/"));	 	 	
 (*8$[[RYYa0D.E

 	D!/9/?/?/A8$V,):):;288#bii/"));	 	 	
 u&AoDV:WX$$S"++6KK,	OO3	 	e		7D)) 	 	

 	e		7D))BNN: 	 	
 LL99kkE OOD!OOAJJr'')<)<=1!QTE JJr(;(;<gs/4{{}8$V,eb.F.F.VW 	e		8E))BNN: 	 	

 ""biii&A&A
 	w%068$W-D))4+>+>?f2#;#;bmm#KQWX( 	e		9F))BNN: 	 	

 yyyy $$ (+(		

 	[!158$X.		"--!4!45d!9!9BMM!IvV358$Z0[[RYYa0P.Q
 KKRYYa0O.P

 $$& 	8$Z0	

 ##% 	8$Z0	
 	1E1EFr0D0DE##E*""5)))BMM9	 	 	
 EbiiqAQ?RSBMBSBSBU8$Z0?(:(:;k(@(@fM))BMM9	 	 	
 EbiiqAQ?RSALARARAT8$Z0>(:(:;k(@(@fM  #  #  #  #iABIIaHOO3	e1Y<8))BMM9 	 	

 ))5)-4]]_8$T*R]]D$;$;<g60H0H2990TUe		;R9ST)) 	 	
 RYYXr
 	R(($*>*>?29--/8$Y/f23K3Kbii3W 	 	
 	(#H-##'''' 	 	
 	DHHX.x8B8LMVV	
 	DHHX.x8B6JKTTUVW 28 <X Fx PQR555 	 	

 	 28 <X Fv NO 	 	

 	  #iABIIaHY1266BII3EaPRWW$rxx/"));	 	 	
 	y!		e,r`   c                     t               }| j                  j                  j                  |d      D ]!  }|j	                  |j                                # ||fS )zUpdate gselect.Select() itemsTrj   )listr9   rs   rt   appendru   )r[   rk   excludemapslayers        r_   r  zNvizToolWindow.GselectOnPopupx  sN    v^^''77eD7Q 	)EKK(	)W}r`   c           
         t        |      }d| j                  j                         d| j                  d<   t	        j
                  t        j                        }i | j                  d<   t        |t        j                  dt        d      z        }t	        j                  |t        j                        }t        |d| j                  	      }|j                         d
   j                  t        j                   | j"                         |j                         | j                  d   d<   t%        |t        j                        }|j                         | j                  d   d<   |j'                  |d
t        j(                  d       |j'                  |d
t        j(                  d       |j'                  |d
t        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       i | j                  d   d<   t        |t        j                  dt        d      z        }t	        j                  |t        j                        }t	        j2                  dd      }|j'                  t%        |t        j                  t        d            dt        j4                         t	        j6                  |t        j                  dt        d      t        d      g      }	|	j9                  d
       |	j;                  d       |	j                  t        j<                  | j>                         |	j                         | j                  d   d   d<   |j'                  |	t        j4                  d       |j'                  t%        |t        j                  t        d            dt        j4                         t	        j6                  |t        j                  d t        d!      t        d"      g      }
|
j;                  d       |
j                         | j                  d   d   d#<   |
j                  t        j<                  | j@                         |j'                  |
t        j4                  d$       |j'                  t%        |t        j                  t        d%            d&t        j4                         tC        |t        j                  d'd(d(d)*      }|j;                  d+       |j                         | j                  d   d   d,<   |j                  t        jD                  | jF                         |j                  t        j                   | jF                         |j'                  |d-.       t	        jH                  |t        j                  t        d/            }|j;                  d+       |j                         | j                  d   d   d0<   |j                  t        jJ                  | jL                         |j'                  |d1d23       |j'                  |d
t        j(                  t        j*                  z  d       |j'                  |d
t        j*                  t        j(                  z  d       t        |t        j                  dt        d4      z        }|j;                  d5       t	        j                  |t        j                        }t	        j2                  dd      }tO        |t        j                  d67      }| j                  t        jP                  | jR                  |       | j                  t        jT                  | jV                  |       |j                         | j                  d   d8<   |j                         | j                  d   d<   |j'                  |dd93       tY        |t        jZ                        }|j                         | j                  d   d:<   |j                  t        j\                  | j^                         |j'                  |d.       tY        |t        j`                        }|j                         | j                  d   d;<   |j                  t        j\                  | jb                         |je                  d<       |j'                  |d=.       tY        |t        jf                        }|j                         | j                  d   d><   |j                  t        j\                  | jh                         |je                  d<       |j'                  |d?.       tY        |t        jj                        }|j                         | j                  d   d@<   |j                  t        j\                  | jl                         |je                  d<       |j'                  |dA.       |j'                  |d(t        j(                  t        j*                  z  d       |j'                  |d
t        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       t	        j
                         }| jo                  |      | _8        | js                  |      | _:        |j'                  | jp                  d(t        j*                  t        j(                  z  d
       |j'                  | jt                  d(t        j*                  t        j(                  z  d
       |jw                  | jt                         |j'                  |d
t        j*                  t        j(                  z  d       i | j                  d   dB<   t        |t        j                  dt        dC      z        }t	        j                  |t        j                        }t	        j2                  dd      }| jy                  || j                  d   dBdDdE| jz                  | j|                  | j~                  fF       t	        j6                  |t        j                  dGg dH      }tY        |t        j                  t        dI      J      }|j                  t        dK             |j                  t        j\                  | j                         |j                         | j                  d   dB   dL<   |j                         | j                  d   dB   dM<   |j9                  dN       |j                  t        j<                  | j                         | j                  | j                  d   dB   dO         }| j                  | j                  d   dB   dP         }|j                  dQ       |j'                  |t        j4                  d       |j'                  |t        j4                  d       |j'                  |t        j4                  d       |j'                  |t        j4                  t        j                  z  d$       |j                  d       |j'                  |d(t        j(                  t        j*                  z  d       |j'                  |d
t        j*                  t        j,                  z  t        j.                  z  t        j0                  z  d       |j                  |       |j                          |j                  d<R       |S )Sr   rp  r2   r   rp   r)   z3D raster mapr   rd   r  r   rn   r   r  r   r  r  r'   r   r  r   r   r  isosurfacesslicesr  rz   r  r   r   r  r   rI  r  r  r  r  zResolution:r  r8  r    r   r=  rK  r&  rJ  r   zDraw wire boxr!  r   rO  )r   r   List of isosurfaceslistStaticBox),     r5   r]   r   isosurfsr  btnAdd	btnDeleteFr   	btnMoveUpr   btnMoveDownr   r|   r  r  Tr6  r  r  r  r   r  r   r  r   r   r,   r  r  )Jr
   r   r   r+   rL   r   r   r=   r   r   r@   r   r   r  r   rK   r  OnSetRaster3Dr   r  r  r  r  r  r  r  r  r`  r  r  r  OnVolumeModeOnVolumeDrawModer   rZ  OnVolumeResolutionrR  rS  OnVolumeDrawBoxr   r[  OnVolumeCheckEVT_LISTBOXOnVolumeSelectr   ID_ADDr  OnVolumeAdd	ID_DELETEOnVolumeDeleter  ID_UPOnVolumeMoveUpID_DOWNOnVolumeMoveDown_createIsosurfacePanelisoPanel_createSlicePanel
slicePanelHider  OnVolumePositionOnVolumePositionChangedOnVolumePositionTextr  OnResetVolumePositionOnVolumeAxisrv   rw   r  r  r  r  r   )r[   r5   r   r   r!  r"  r   r  r#  r  r  resolisolevelr  r  r  r  r   r  r   r  r  s                         r_   r  z NvizToolWindow._createVolumePage  s
   V,%&D4F4F4L4L4NO		(KK,	 u&AoDV:WX$$S"++6e+t?R?RSA##BKK1C1CD$)KKM5!2995%)ZZ\6"Uqrvva@TabffQ?RWW$rxx/"));	 	 	
 &(6"u&AfI:NO$$S"++6OO3	 	e		7D)) 	 	

 yyyy}%q{3	
 	![!		"--!2!23-1ZZ\6"6*d!9!9vF 	e		:G)) 	 	

 		yyvY)-	
 	k"056"9-

2==$"7"78e"":":G 	e		=9IJ)) 	 	

 RYYXqaS
 	g38;;=6"<0

2??D$;$;<

2;; 7 78e( kk299Ao<NOG,/IIK6"5)$"6"67cvF3Y1266BII3EaPh1299rvv3EaP
 RYYf:O8P.Q
 	O$$$S"++6OO3	  uL		"%%t'9'98D		"..$"5"5x@)1)9:&'/~~'78$hF8 u3'-||~8$BMM4#3#34f&)%BLL9	*3//*;;'r}}d&9&9:iV,%BHH5	*3//*;;'r}}d&9&9:iV,Ebjj9,7,=,=,?=)(=(=>5!kv.Y1266BII3EaPRWW$rxx/"));	 	 	
 33E:007		$--ABII4Fq	Q		$//abii"&&6HQR	S

4??#e		BFF0B1M *,:&u&AjM:RS$$S"++6OO3	 	(#!%%,,)) 	 	
 yyRYYX
 u!G*=678

2==$"<"<=27++-:&w/15:&v.!		"--!2!23$$TXXh%7
%CH%MN##DHHX$6z$B6$JKsd!9!9vFf2#;#;He"":":Ge"":":R^^"KQWX  #Y1266BII3EaPRWW$rxx/"));	 	 	
 	y!		e,r`   c                 F   t        |      }d| j                  j                         d| j                  d<   i | j                  d<   t        j                  t
        j                        }t        j                  |t
        j                  t        d            }|j                  t
        j                  | j                         |j                  d       d| j                  _        |j#                  |dt
        j$                  d	       t'        |t
        j                  d
t        d      z        }t        j(                  |t
        j                        }t        j*                  dd      }t        j*                  dd      }| j-                  ||d       t/        |t
        j                  d| j0                        }	|	j                         | j                  d   d<   |j#                  |	dt
        j2                  t
        j4                  z         |j#                  |d       t        d      }
| j7                  || j                  d   ddd|
| j8                  | j:                  | j8                  f       t        j*                  dd      }|j#                  t=        |t
        j                  t        d            dt
        j>                  d       |j#                  | jA                  | j                  d   d   d         t
        jB                  d        |j#                  | jA                  | j                  d   d   d!         t
        j4                  t
        j>                  z  t
        jD                  z  t
        jF                  z  t
        jH                  z  d        |j#                  |d"t
        jB                         |j#                  |d#t
        j$                  t
        jJ                  z  d$	       |j#                  |dt
        jJ                  t
        jL                  z  t
        jH                  z  t
        jF                  z  d	       t'        |t
        j                  d
t        d%      z        }t        j(                  |t
        j                        }t        j*                  dd      }|j#                  t=        |t
        j                  t        d&            dt
        j4                         tO        jP                  |t
        j                  tS        jT                  d'dd()      tV        jX                  *      }|j                         | j                  d   d(<   |j                  tN        jZ                  | j\                         |j#                  |d"       |j#                  t=        |t
        j                  t        d+            dt
        j4                         t        d,      }
| j7                  || j                  d   d-d.d|
| j^                  | j:                  | j^                  f/       |j#                  | jA                  | j                  d   d-   d         dt
        j4                         |j#                  | jA                  | j                  d   d-   d!         dt
        j2                         |j#                  t=        |t
        j                  t        d0            d1t
        j4                         t        d2      }
| j7                  || j                  d   d3d.d|
| j^                  | j:                  | j^                  f/       |j#                  | jA                  | j                  d   d3   d         d4t
        j4                         |j#                  | jA                  | j                  d   d3   d!         d5t
        j2                         |j#                  |d#t
        j$                  t
        jJ                  z  d$	       |j#                  |dt
        jJ                  t
        jL                  z  t
        jH                  z  t
        jF                  z  d	       |ja                  |       |jc                          |je                          |jg                  d6       |S )7zCreate light pagerp  r   r   r~   Show light modelr   Tr2   r   r)   zLight source positionr   r   r   )r]   r   r   r|   r   r   r   r   zAdjusts the light heightr  F)r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r,   r   r    r   zLight color and intensityr*  r   r   r   r   zBrightness:z#Adjusts the brightness of the lightbrightr  )r   r   r   r   r   r   zAmbient:r   zAdjusts the ambient lightambientr   r  r  )4r
   r   r   r+   r=   rL   r   r   rR  r   r@   rK   rS  OnShowLightModelrw   r;   	showLightr  r  r   r   r  r  LightPositionWindowr9   r  r  r  OnLightChangeOnLightChangedr   r  rv   r  r  r  r  r  r  r  r   r	   r   r   r  r  OnLightColorOnLightValuer  r   r  r   )r[   r5   r   r   r8  r!  r"  r#  r$  r   r   r%  r   s                r_   r  zNvizToolWindow._createLightPageO  s   V,$%43G3G3M3M3OP		'KK,	{{%BIIQ?Q=RS		"//4#8#89d"&dqrvva@ RYYf:Q8R.S
 $$S"++6OO3	??2%xgF!biijDNN
 ),		*%Sf2??R=U=U+UVhF+ ./'"$$d&9&94;M;MN 	 	
 oo115u!I,?	 	 	
 	 1# 6x @A 	 	

 	 1# 6v >?))mmff ii hh	
  	 	
 	kvBNNCY1266BII3EaPRWW$rxx/"));	 	 	
 RYYf:U8V.W
 $$S"++6OO3	u!H+>)) 	 	

 !!yy##&ggN,,	
 &+[[]'"

4(($*;*;<e(u!M2BC)) 	 	

 9:'"##T%8%8$:K:KL 	 	
 	 1( ;H EF)) 	 	

 	 1( ;F CD 	 	

 	u!J-@)) 	 	

 /0'"##T%8%8$:K:KL 	 	
 	 1) <X FG)) 	 	

 	 1) <V DE 	 	
 	Y1266BII3EaPRWW$rxx/"));	 	 	
( 	y!		e,r`   c           	         t        |      }d| j                  j                         d| j                  d<   i | j                  d<   t        j                  t
        j                        }t        |t
        j                  dt        d      z        }t        j                  |t
        j                        }t        |d| j                  	      }|j                         d
   j                  t
        j                   | j"                         |j                         | j                  d   d<   |j%                  |d
t
        j&                  d       |j%                  |d
t
        j(                  t
        j*                  z  t
        j,                  z  t
        j.                  z  d       t        |t
        j                  dt        d      z        }t        j                  |t
        j0                        }t        d      dft        d      dft        d      dft        d      dffD ]  }	t        j2                  ||	d
   |	d         }
|
j                         | j                  d   |	d   <   |j%                  |
d
t
        j4                  t
        j*                  z  t
        j,                  z  d       |
j                  t
        j6                  | j8                          |j%                  |d
t
        j(                  t
        j*                  z  t
        j,                  z  t
        j.                  z  d       t        |t
        j                  dt        d      z        }t        j                  |t
        j0                        }t        j:                  dd      }|j%                  t=        |t
        j                  t        d            dt
        j>                         tA        |t
        j                  ddd !      }|jC                  tE        jF                  d"dd#$             |j                  t
        jH                  | j8                         |j                         | j                  d   d#<   |j%                  |d%&       |j%                  t=        |t
        j                  t        d'            d(t
        j>                         tK        jL                  |t
        j                  tN        jP                  )      }|jS                  tE        jF                  d"dd*$             |j                  tJ        jT                  | j8                         |j                         | j                  d   d*<   |j%                  |d+&       |j%                  |dt
        j&                  t
        j(                  z  d       |j%                  |d
t
        j(                  t
        j*                  z  t
        j,                  z  t
        j.                  z  d       |jW                  |       |jY                          |j[                          |j]                  d,-       |S ).zCreate fringe pagerp  r    r   ro   r)   rx  r   rb   r  r   rn   r2   r   zEdges with fringezN && WnwzN && EnezS && WswzS && Ese)r5   r   r   r'   Settingsr   z Elevation of fringe from bottom:r   r   r8      .rE  )r5   r]   r   r?  r@  r   elevr   r   r   r*  r   r  r   r   Fr  )/r
   r   r   r+   r=   rL   r   r   r   r   r@   r   r   r  r   rK   r  OnSetSurfacer  r  r  r  r  r  r  rR  ADJUST_MINSIZErS  OnFringer  r   r  r   rw   r	   r   rZ  r  r   r   r  rg  r  r  r   r  r   )r[   r5   r   r   rbox	rboxSizerr   ebox	eboxSizeredgechkboxsbox	sboxSizerr#  spinr   s                   r_   r  z NvizToolWindow._createFringePage	  s   V,%&D4H4H4N4N4PQ		(KK,	 "))6Qy\;RS%%dBKK8	e(D<O<OPA##BKK1B1BC$)KKM5!eqARWW$rxx/"));	 	 	
 RYYf:M8N.O
 %%dBMM:	x[$x[$x[$x[$	
 	8D [[T!W47KF*0,,.DHHXtAw'MM&&0288;	   KK7	8  	RWW$rxx/"));	 	 	
 "))6Qz];ST%%dBMM:	OO3	 	!4V2W )) 	 	
 utQTUl&&V&QR		"//4==1%)ZZ\6"d' 	e		8E)) 	 	

 !!RYYY-H-H
 	((v8GTU

4(($--8&+kkm7#e(iABFFRYY4FqQRWW$rxx/"));	 	 	
 	y!		e,r`   c           	      $   t        |      }d| j                  j                         d| j                  d<   i | j                  d<   t        j                  t
        j                        }i | j                  d   d<   t        |t
        j                  dt        d      z        }t        j                  |t
        j                        }t        j                  d	d	
      }|j                  t        |t
        j                  t        d            ddt
        j                         t!        |t
        j                  dt
        j"                        }|j                  |d       |j                         | j                  d   d   d<   |j%                  t
        j&                  | j(                         |j%                  t
        j*                  | j(                         |j                  t        |t
        j                  t        d            ddt
        j                         t-        j.                  |t
        j                  t0        j2                        }|j                  |d       |j                         | j                  d   d   d<   |j%                  t,        j4                  | j(                         t7        |t
        j                  t        d            }	|j                  |	d       |	j%                  t
        j8                  | j:                         |	j                         | j                  d   d   d<   |	j=                  d       t?        |t
        j                  t        d            }
|
j                         | j                  d   d   d<   |j                  |
d       |
j%                  t
        j@                  | jB                         | jD                  jF                  d   d   }|
jI                  |       |j                  |d t
        jJ                  d!"       |j                  |d t
        jJ                  t
        jL                  z  t
        jN                  z  t
        jP                  z  d!"       i | j                  d   d#<   t        |t
        j                  dt        d$      z        }t        j                  |t
        j                        }t        j                  d	d	
      }|j                  t        |t
        j                  t        d%            ddt
        j                         t!        |t
        j                  dt
        j"                        }|j                  |d       |j                         | j                  d   d#   d<   |j%                  t
        j&                  | j(                         |j%                  t
        j*                  | j(                         |j                  t        |t
        j                  t        d&            ddt
        j                         t-        j.                  |t
        j                  t0        j2                        }|j                  |d       |j                         | j                  d   d#   d<   |j%                  t,        j4                  | j(                         t7        |t
        j                  t        d'            }	|j                  |	d       |	j%                  t
        j8                  | j:                         |	j                         | j                  d   d#   d<   |	j=                  d(       t        jR                  |t
        j                  g )      }|j                         | j                  d   d#   d*<   |j                  |d+t
        jJ                  ,       t?        |t
        j                  t        d            }
|
j                         | j                  d   d#   d<   |j                  |
d-       |
j%                  t
        j@                  | jT                         |j                  |d t
        jJ                  d!"       |j                  |d t
        jJ                  t
        jL                  z  t
        jN                  z  t
        jP                  z  d!"       | jW                          |jY                  |       |j[                          |j]                          |j_                  d./       |S )0z6Create decoration (north arrow, scalebar, legend) pagerp  r   r   
decorationarrowr)   zNorth Arrowr   r'   r  zArrow length (in map units):r   r   r   r8  r5   r]   r   r(   r   r   r   zArrow color:r   r  r   zPlace arrowr   place
placeArrowr$  r%  r   r8  r   r2   r   scalebarz	Scale barz Scale bar length (in map units):zScale bar color:zPlace new scale barplaceScalebarrN  r   r   r   r   Fr  )0r
   r   r   r+   r=   rL   r   r   r   r   r@   r   r  r  r   r  r   TE_PROCESS_ENTERrK   EVT_TEXT_ENTEROnDecorationPropEVT_KILL_FOCUSr  r   r   r  r  r   r  OnDecorationPlacementr  r   r  OnArrowDeleter9   r  r  r  r  r  r  r`  OnScalebarDeleteDisableScalebarControlsr  r   r  r   )r[   r5   r   r   nabox
naboxSizerr#  sizeCtrlr   toggler%  shownscalebarChoices                r_   r  z$NvizToolWindow._createDecorationPagef	  s   V,)*8L8L8R8R8T"U		,!#KK,	 +-w'299FaFV<WX&&ubkk:
OO3	!4R2S )) 	 	
 RYYXR=P=P
 	hF+2:..2Bw'/b'')>)>?b'')>)>? 	e		>9JK))	 	 	
 !!RYYY-H-H
 	e(38;;=w'0

4(($*?*?@ Uryy-@PQf&)B'')C)CD39<<>w'0|$u!H+F4:LLNw'1f&)BMM4#5#56))'26:eyQRYYqIRWW$rxx/"));	 	 	
 .0z*299Fan<UV&&ubkk:
OO3	!4V2W )) 	 	
 RYYXR=P=P
 	hF+5=^^5Ez*62b'')>)>?b'')>)>? 	e		;M9NO))	 	 	
 !!RYYY-H-H
 	e(6;kkmz*73

4(($*?*?@ RYYa0E.F
 	f&)B'')C)CD6<llnz*73'%BIIrJ7E7K7K7Mz*84n&ryyAu!H+F7=||~z*84f&)BMM4#8#89yQRYYqIRWW$rxx/"));	 	 	
 	$$&y!		e,r`   c                    | j                  | j                  |   d         j                         }|r|S |dk(  s|dk(  r| j                  |d      S |dk(  r| j                  |d      S |dk(  r| j                  |d      S y	)
zGet nviz datarn   rm   ro   rb   mapTyperc   rp   rd   N)rv   r=   GetValue_getLayerPropertiesByName)r[   r  nameOnlyr   s       r_   GetLayerDatazNvizToolWindow.GetLayerData	  s    ""488H#5e#<=FFHKy H$811$1II!11$1II!11$1LLr`   c                 `    | j                   j                  j                  ||      }|r|d   S y)zGet layer (render.Layer) by name and type.

        :param name: layer name
        :param mapType: map type (raster, vector, raster_3d)
        )rk   r   r   N)r9   rs   rt   )r[   r   r  ry   s       r_   _getMapLayerByNamez!NvizToolWindow._getMapLayerByName	  s3     ##33'3M!9r`   c                     | j                   j                  d|      }|sy|D ]A  }| j                   j                  |d      |k(  s$| j                   j                  |d      c S  y)zGet nviz properties stored in layertree items by name and type.

        :param name: layer name
        :param mapType: map type (raster, vector, raster_3d)
        r   ri   rK  Nr   rh   r   )r6   FindItemByDatarr   )r[   r   r  itemsr  s        r_   r  z(NvizToolWindow._getLayerPropertiesByName
  so     		((V4(@ 	@Dyy%%d%77Byy--d-??	@ r`   c                    | j                   j                         }|j                         s|j                         r|j	                         s~t        d      }t        j                  | |t        d      t        j                  t        j                  z        }|j                         t        j                  k(  r|j                          y|j                          | j                  d       | j                          |j!                  d       |j#                  d       |j%                          | j'                  | j(                  d	   d
         j+                          | j'                  | j(                  d	   d         j+                          | j'                  | j(                  d	   d         j-                          | j'                  | j(                  d	   d         j-                          | j'                  | j(                  d	   d   d         j+                          | j'                  | j(                  d	   d   d         j+                          y)zAnimation: start recordingzDDo you want to record new animation without saving the previous one?zAnimation already exists)r5   messagecaptionr(   Nr   Fr,  r  r)  r/  r1  r3  r5  r   r,   )r9   rQ   IsPausedExistsIsSavedr@   rL   MessageDialogYES_NOCENTRE	ShowModalID_NODestroyClearUpdateFrameIndexUpdateFrameCountSetPauseSetModeStartrv   r=   Disabler  )r[   r   r)  r4   dlgs        r_   rV  zNvizToolWindow.OnRecord
  s   ~~**,}}{{}T\\^Z &&89))bii/	 ==?bhh.KKMJJL!!!$!!#e(#

DHHV,V45==?DHHV,X67??ADHHV,W56==?DHHV,V45<<>DHHV,\:8DEMMODHHV,\:6BCKKMr`   c                    | j                   j                         }|j                  d       |j                  d       |j	                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d   d	         j                          | j                  | j                  d   d   d
         j                          y)zAnimation: replayFr/  r  r)  r,  r1  r3  r5  r   r,   N)	r9   rQ   r  r  r  rv   r=   r  r  r[   r   r)  s      r_   rW  zNvizToolWindow.OnPlay6
  s   ~~**,e&!

DHHV,V45==?DHHV,X67??ADHHV,W56==?DHHV,V45<<>DHHV,\:8DELLNDHHV,\:6BCJJLr`   c                 B   | j                   j                         }|j                  d       |j                         dk(  r|j	                          |j                         r|j                          | j                  d       | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d	   d
         j                          | j                  | j                  d   d	   d         j                          y)z#Animation: stop recording/replayingFrB  r   r)  r/  r,  r1  r3  r5  r   r,   N)r9   rQ   r  GetMode
StopSaving	IsRunningr4  r  rv   r=   r  r  r  s      r_   rX  zNvizToolWindow.OnStopD
  sA   ~~**,e<<>V#OO>>IIKa DHHV,V45<<>DHHV,X67>>@DHHV,W56>>@DHHV,V45==?DHHV,\:8DEMMODHHV,\:6BCKKMr`   c                    | j                   j                         }|j                  d       |j                         }|j	                         r|j                          |dk(  r| j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d   d         j                          | j                  | j                  d   d   d         j                          n|dk(  r| j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d   d         j                          | j                  | j                  d   d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d	         j                          y
)zPause animationTr,  r)  r/  r5  r   r,   r1  r3  N)
r9   rQ   r  r  r  r2  rv   r=   r  r  )r[   r   r)  r  s       r_   rY  zNvizToolWindow.OnPauseV
  s   ~~**,d||~>>JJL8 0 89AAC 0 :;BBD 0 >x HIQQS 0 >v FGOOQV^ 0 :;CCE 0 89@@B 0 >x HIPPR 0 >v FGNNPDHHV,W56>>@DHHV,V45<<>r`   c                 J    |j                         }| j                  |d       y)zFrame index changed (by slider)F)indexsliderWidgetN)GetIntr  r[   r   r  s      r_   rT  zNvizToolWindow.OnFrameIndexm
  s     E>r`   c                 J    |j                         }| j                  |d       y)z!Frame index changed by (textCtrl)F)r  
textWidgetN)r  r  r  s      r_   rU  zNvizToolWindow.OnFrameIndexTextr
  s!     Ee<r`   c                 v    | j                   j                         }|j                  |j                                y)zFrames per second changedN)r9   rQ   SetFPSr  r  s      r_   r[  zNvizToolWindow.OnFPSw
  s&    ~~**,ELLN#r`   c                    | j                   j                         }|j                         }||k\  r|dz
  }|dk  rd}|r5| j                  | j                  d   d   d         }|j                  |       |r>| j                  | j                  d   d   d         }|j                  t        |             |r|j                  t        |             yy)zUpdate frame indexr    r   r)  r5  r   r,   N)r9   rQ   GetFrameCountrv   r=   rw   int	GoToFrame)	r[   r  r  r  	goToFramer)  
frameCountr   r,   s	            r_   r  zNvizToolWindow.UpdateFrameIndex|
  s     ~~**, '')
JNE19E((&)9,)G)QRFOOE"&&txx'7'Ef'MNDMM#e*% NN3u:& r`   c                     | j                   j                         }|j                         }| j                  | j                  d   d         j                  t        |             y)zUpdate frame count labelr)  r7  N)r9   rQ   r  rv   r=   SetLabelstr)r[   r)  counts      r_   r  zNvizToolWindow.UpdateFrameCount
  sM    ~~**,""$DHHV,V45>>s5zJr`   c                 j   | j                   j                         }| j                  d       | j                  | j                  d   d   d         }| j                  | j                  d   d   d         }|dk(  r1|j                         }|j                  |       | j                          | j                  | j                  d   d         j                          | j                  | j                  d   d	         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d
         j                          | j                  | j                  d   d   d         j                          | j                  | j                  d   d   d         j                          | j                  | j                  d   d   d   d         j                          d| j                   j                  d<   | j                   j                  d       y)zAnimation finishedr   r  r)  r5  r   r,   r,  r1  r3  r/  rB  rC  rS  Fr1   N)r9   rQ   r  rv   r=   r  SetMaxr  r  r  rI   rJ   )r[   r  r)  r   r,   r  s         r_   rT   z"NvizToolWindow.OnAnimationFinished
  s   ~~**,A&$$TXXf%5l%CH%MN""488F#3L#A&#IJ8&&(EMM% !!#DHHV,W56>>@DHHV,V45==?DHHV,X67>>@DHHV,V45<<>DHHV,\:8DEMMODHHV,\:6BCKKMDHHV,V4W=iHIPPR).g&u%r`   c                 b    |dk(  r| j                          y|dk(  r| j                  |d       yy)zAnimation: frame index changedr,  r/  F)r  r  N)r  r  )r[   r  r  s      r_   rV   z%NvizToolWindow.OnAnimationUpdateIndex
  s5    8!!#V^!!!? r`   c                    | j                   j                         }| j                  | j                  d   d   d   d         j	                         }| j                  | j                  d   d   d   d         j                         }| j                  | j                  d   d   d   d         j	                         }|st        | t        d             y	t        j                  j                  |      st        | t        d
      |z         y	| j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d   d         j                          | j                  | j                  d   d   d         j                          | j                  | j                  d   d   d   d         j                          |j                  |||       y	)z&Save animation as a sequence of imagesr)  rB  rC  rJ  rR  rQ  zNo file prefix given.)r5   r  NzDirectory %s does not exist.r1  r3  r,  r/  r5  r   r,   rS  )pathrJ  rR  )r9   rQ   rv   r=   r  r   r   r@   r\  r  existsr  r  SaveAnimationFile)r[   r   r)  rJ  rR  rQ  s         r_   ra  zNvizToolWindow.OnSaveAnimation
  s   ~~**,$$HHVV$W-h7

(* 	 $$HHVV$W-h7

,. 	 !!$((6"26":7"CE"JKTTVD!,C*DE$D!,J*Kc*QRDHHV,W56>>@DHHV,V45<<>DHHV,X67??ADHHV,V45==?DHHV,\:8DEMMODHHV,\:6BCKKMDHHV,V4W=iHIQQSCvFr`   c                 d   | j                   j                         }| j                  | j                  d   d         }t	        d      t        |      z   }|j                  |       |j                  |       | j                  d       | j                  dd       | j                   j                  d       d	D ]7  }| j                  | j                  d
   |   d         }|j                  |       9 | j                  | j                  d
   d         }|j                  |j                                y)z&Create new surface with constant valuer  rm   	constant#NTr   r~  FeraseBackgroundrD  r7  rc   rn   )r9   NewConstantrv   r=   r@   r  r  SetStringSelectionr0  r  rJ   rw   r  )r[   r   r   r=   vtype	checklists         r_   r1  zNvizToolWindow.OnNewConstant
  s    ~~))+!!$((:"6y"AB~D	)

4t$  &Z6u5 ) 	#E++DHHX,>u,Ei,PQIT"	# !!$((8"4U";<S\\^$r`   c                 ^   | j                  | j                  d   d         j                         }|t        j                  k(  ry| j                  | j                  d   d         j                         }| j                  j                  |       | j                  | j                  d   d         }|j                  |       |j                         r%|j                  d       | j                  dd       n"|j                  d       | j                  d       dD ]\  }| j                  | j                  d	   |   d         }|j                  |      }|t        j                  kD  sL|j                  |       ^ | j                  j!                         r| j                  j#                  d       yy)
z Delete selected constant surfacer  rm   N Fr  r   r!  rc   )rv   r=   r   rL   	NOT_FOUNDGetStringSelectionr9   DeleteConstantr$  IsEmptyrw   r  r  r0  
FindStringr7   IsAutoRenderedrJ   )r[   r   layerIdxr   r=   r$  r%  r  s           r_   r2  zNvizToolWindow.OnDeleteConstant
  sc   &&txx
';I'FGTTVr||#""488J#7	#BCVVX%%h/!!$((:"6y"AB

8;;=LLOOUO;Q$$T* ) 	'E++DHHX,>u,Ei,PQI''-Dbll"  &		' ??))+NN""5) ,r`   c                 N   | j                  | j                  d   d         j                         }|t        j                  k(  ryt        d      t        |dz         z   }| j                  j                  |   }t        j                  |d         D ]  \  }}|dk(  r| j                  |      }|dv s!|dk(  r?| j                  | j                  d   |         j                  | j                  |             | j                  | j                  d   |         j                  |        y)	zConstant selectedr  rm   Nr  r    r   )r   rK  r&  r  r  )rv   r=   r   rL   r(  r@   r  r9   	constantssix	iteritems_getColorFromStringrw   _getPercent)r[   r   r.  r   r   r  rK  s          r_   r0  z"NvizToolWindow.OnConstantSelection  s   &&txx
';I'FGTTVr||#~HqL 11~~''1==j)9: 	PKD%w007AA8#''(<T(BCLL((/ ##DHHZ$8$>?HHO	Pr`   c                    | j                  | j                  d   d         j                         }|t        j                  k(  ry| j
                  j                  |   }dD ]7  }| j                  | j                  d   |         j                         |d   |<   9 | j                  | j                  | j                  d   d         j                               |d   d<   | j                  |d   d   d      |d   d<   t        |	      }t        j                  | j
                  |       | j                  j                         r| j
                  j                  d       yy)
z[Change properties (color, value, resolution)
        of currently selected constant surfacer  rm   N)r&  rK  r  r   r  F	toPercentr   )rv   r=   r   rL   r(  r9   r0  r  _getColorStringr4  r   r   r7   r-  rJ   )r[   r   r.  r   r  s        r_   r3  z NvizToolWindow.OnSetConstantProp  sH    &&txx
';I'FGTTVr||#~~''15 	D%)%8%8$T*&hj T"	 %)$8$8 4W =>GGI%
Z! &*%5%5X&% &6 &
Z"
 #-
T^^U+??))+NN""5) ,r`   c                    | j                  d      d   }|d   d   }| j                  | j                  d   d         j                         }| j                  | j                  d   d         j                         }| j                  j                  |||| j                  | j                  d   d         j                         | j                  | j                  d   d         j                         | j                  | j                  d   d	         j                         | j                  | j                  d   d
         j                                | j                  j                  d       y)zShow/hide fringero   rm   objectr]   r  r   r  r  r  r  FN)	r  rv   r=   r  r;   	SetFringe	IsCheckedr9   rJ   )r[   r   r   sidr  r   s         r_   r  zNvizToolWindow.OnFringe.  s6     *958nT"""488H#5f#=>GGI##DHHX$6w$?@IIK 24 89CCE 24 89CCE 24 89CCE 24 89CCE	
 	u%r`   c                 J   | j                  ||j                               }|sy| j                  |j                               j                         ||<   t	        j
                  ||         D ]%  }| j                  |      j                  ||          ' |j                          y)zGeneric scrolling handlerN)_NvizToolWindow__GetWindowNamer   rv   r  r1  
itervaluesrw   r   )r[   r   r=   r   winNamews         r_   OnScrollzNvizToolWindow.OnScrollA  s    &&sEKKM:++EKKM:CCEWG- 	;A"++DM:	; 	

r`   c                     |j                         \  }}||cxk  r|k  s)n |j                  t        ||      t        ||             y y N)GetRanger  r?  r@  )r[   r   rK  minimmaxims        r_   AdjustSliderRangez NvizToolWindow.AdjustSliderRangeL  s@    (u'%'OOCu-s5%/@A (r`   c           	         t        j                  |t         j                        }t        j                  t         j                        }t        |t         j                  dt        d      z        }t        j                  |t         j                        }t        j                  dd      }i | j                  d   d<   t        j                  |t         j                  t        d	            }|j                  |d
dt         j                         |j                  t         j                  | j                          |j#                         | j                  d   d<   d}dt        d      fdt        d      fdt        d      fdt        d      fdt        d      ffD ]  \  }	}
i | j                  d   |	<   d}|	dk(  rd}|j                  t%        |t         j                  |
dz         |dfd|ft         j                         |	dk7  r2t        j&                  |t         j                  dt        d      g      }nd }|	dvr2|j)                  t        d       d!       d"| j                  d   |	   d#<   nd$| j                  d   |	   d#<   |r |	dk7  r|j+                  t        d%      &       |rq|j#                         | j                  d   |	   d'<   |j                  t         j,                  | j.                         |j                  |t         j                  |df(       |	dk7  rt1        |t         j                  d)d*+      }t3        j4                  dg      r$|j#                         | j                  d   |	   d<   n1|j7                         j#                         | j                  d   |	   d<   |j                  t         j8                  | j:                         |j                  |t         j                  |df(       nd }|	dk(  rt=        j>                  d,ddd-g.      }tA        jB                  |t         j                  |t2        jD                  /      }|j                  t@        jF                  | j:                         |jI                  d       n1|	dk(  rd }n(|	dk(  rtK        |t         j                  d)t         jL                  0      }|j                  t         jN                  | j:                         |j                  t         jP                  | j:                         nd1}tS        |t         j                  |d2      }|	dk(  r|jU                  d3d45       n|	d6v r|jU                  dd75       |j                  t         jV                  | j:                         |j                  t         j8                  | j:                         |r|j#                         | j                  d   |	   d8<   |	dk(  r%|j                  |t         j                  |df(       nK|jY                  d"       |j                  |t         j                  |df(       nd | j                  d   |	   d8<   |	dk7  r| j[                  d|	9       |dz  } |j                  |dt         j\                  t         j^                  z  d:       |j                  |dt         j^                  d:       |ja                  |       |S );Nr   r)   zIsosurface attributesr   r2   r   rp   r  ztoggle normal directionr   r   r   inoutr    topozIsosurface valuer   r  r  r  r  r  r  r  r   r  r   rI  rn   r  rM  r   r  r  r  Fr  Tr  r  r  r   )   r:  grid3r  r   rK  r   r   r  r8  r  r'  r(  r  )r  r  r   r  r  r   )1rL   Panelr   r   r  r   r@   r   r   r  r=   rR  r  r  rK   rS  OnInOutModer   r   r`  r  r  r  r  r   r   r  r  r  OnVolumeIsosurfMapr	   r   r  r   r  r  r  r   r  r  r  r   r  rZ  r  r  r  r  r  )r[   r5   r   rh  r!  r"  r#  rL  r  r  r  colspanr  rn   r   rK  r   s                    r_   r  z%NvizToolWindow._createIsosurfacePanelQ  s   2995R]]+RYYf:Q8R.S
 $$S"++6OO3	%'6"RYYa0I.J
 	ef2;S;ST

2??D$4$45&+kkm7#Q)*+aj!QvYq()an%
 d	KD% (*DHHXt$Gv~MM%BIIUS[I!H\--	   v~ii RYYY5
 55

'

27<"4(47;"4(4tv~

*
.25))+"4(/(8(89c(@(@sAhOv~ yy"  ++QC069iikDHHX&t,U369oo6G6M6M6ODHHX&t,U3d&=&=>c(@(@sAhOw$(( h7I ))biiI<W<W 

400$2I2IJg&# yy"--	 

2,,d.E.EF

2,,d.E.EF   "))$PQR6>NN$sN;00NN!CN8

2??D,C,CD

2;;(?(?@49KKM"4(16>MM%b.F.FSRSHMULL'MM%b.F.FSRSHMU48"4(1v~$$hd$C1HCId	L 	Y1266BII3EaP

8		!
Dvr`   c           	         t        j                  |t         j                        }t        j                  t         j                        }t        |t         j                  dt        d      z        }t        j                  |t         j                        }t        j                         }i | j                  d   d<   |j                  t        |t         j                  t        d            dt         j                  t         j                  z  d	
       t        j                  |t         j                  dd      }|j                  |dt         j                  t         j                   z  d	
       |j#                         | j                  d   d   d<   |j%                  t         j&                  | j(                         |j                  |dt         j*                  t         j,                  z  d	
       t        j.                  d	d	      }t1        d      D ]a  }	t        |t         j                        }
|
j3                  dt5        |	      z          |j                  |
d|	dz   ft         j6                         c t1        dd      D ]a  }	t        |t         j                        }
|
j3                  dt5        |	      z          |j                  |
d	|	dz
  ft         j6                         c t1        d      D ]a  }	t        |t         j                        }
|
j3                  dt5        |	      z          |j                  |
|	dz   dft         j                         c t        |t         j                        }
|
j3                  d       |j                  |
dt         j                         t9        d      D ]  \  }	}t;        |t         j                  ddd      }|j#                         | j                  d   d   d|z   <   |j%                  t         j<                  | j>                         |j%                  t         j@                  | jB                         |j                  |d|	dz   ft         j6                  t         j,                  z          t9        d      D ]  \  }	}t;        |t         j                  ddd      }|j#                         | j                  d   d   d|z   <   |j%                  t         j<                  | j>                         |j%                  t         j@                  | jB                         |j                  |d|	dz   ft         j6                  t         j,                  z          t9        d      D ]  \  }	}t;        |t         j                  ddd      }|j#                         | j                  d   d   d|z   <   |j%                  t         j<                  | j>                         |j%                  t         j@                  | jB                         |j                  |d|	dz   ft         j6                  t         j,                  z          |jE                  dd       |jE                  dd       |jE                  dd       |j                  |dt         j*                  t         j,                  z  d	
       t        j                         }|j                  t        |t         j                  t        d            dt         j                  t         j                  z  t         jF                  z  d
       tI        |t         j                  dddd       }|j%                  t         jJ                  | jL                         |j#                         | j                  d   d   d!<   |j                  |dt         j                  t         j                   z  t         jF                  z  d
       |j                  t        jN                  d"d"      dt         j,                  #       tQ        |t         j                  t        d$            }|j%                  t         jR                  | jT                         |j#                         | j                  d   d   d%<   |j                  |dt         j                  t         jF                  z  d
       |j                  |dt         j*                  t         j,                  z  d	
       |jW                  |       |S )&Nr   r)   zSlice attributesr   rp   slicezSlice parallel to axis:r   r2   r   r8  r  r  axesr   r   label_edge_r    r   r   label_coord_label_coord_2r   )x1x2r   )r5   r]   minValuemaxValuerK  slider_)y1y2)z1z2r)     )r5   r]   r   r?  r@  r>  r  r:  rA  r  r   ),rL   rQ  r   r   r  r   r@   r   r   r=   r  r   r  r  r`  r  r  r   rK   r  OnVolumeSliceAxesr  r  r  r   r  r  r  	enumerater   EVT_SPINOnSlicePositionChangeEVT_SCROLL_THUMBRELEASEOnSlicePositionChangedr  r  r   rZ  OnSliceTransparencyr  r   r  OnSliceResetr  )r[   r5   r   rh  r!  r"  rb  rW  r#  ir   coordr   r  r   s                  r_   r  z NvizToolWindow._createSlicePanel  s   2995R]]+RYYf:L8M.N
 $$S"++6&(7#

e		;T9UV))BHH4	 	 	
 yyRYYX
 	

4ABMMBGG,CA
N.2jjl7#F+		"--!7!78V0B1MOO3	 q 	GAe		:EMM-#a&01MM%aQZbooMF	G q! 	GAe		:EMM-#a&01MM%aQZbooMF	G q 	PAe		:EMM.3q612MM%a!eQZb6N6NMO	P %BII6o&eb.F.FG!,/ 	THAuQAF >D\\^DHHXw'	E(9:KKT%?%?@KK22D4O4OPMM&q!a%jr7RMS	T ",/ 	THAuQAF >D\\^DHHXw'	E(9:KKT%?%?@KK22D4O4OPMM&q!a%jr7RMS	T ",/ 	THAuQAF >D\\^DHHXw'	E(9:KKT%?%?@KK22D4O4OPMM&q!a%jr7RMS	T 	  A&  A&  A&Y1266BII3EaP 

e		?9KL))BHH4rvv=	 	 	
 RYYX1#q
 			"//4#;#;<04

7#H-

))BGG3bff<	 	 	
 	

2772r?qryy
Ae		7D

2==$"3"34/4{{}7#G,

ab&>&>&GPQ 	 	
 	V0B1Mx r`   Nc
                    t               ||<   |r7t        j                  t        j                  z  t        j                  z  }
|df}n6t        j
                  t        j                  z  t        j                  z  }
d|f}t        |t        j                  |d   |d   |
|      }|	rt        di |}nt        di |}|j                  d       |d   r#|j                  t        j                  |d          |d   r#|j                  t        j                  |d          |j                         ||   d<   t        |t        j                  dt        j                         }|j                  d       |r|j#                  |       |d	   rF|j                  t        j$                  |d	          |j                  t        j&                  |d	          |j                         ||   d<   y
)zAdd control (Slider + TextCtrl)r:  r   r    )r5   r]   r]  r^  r(   r   r   r8  r  r,   r   N )dictrL   SL_HORIZONTALSL_AUTOTICKS	SL_BOTTOMSL_VERTICAL
SL_INVERSEr   r   r   r  rK   rg  ri  r   r   r  r  r  r  )r[   r5   r   r   r   r   r   r   r   r   r(   sizeWr^   r   r,   s                  r_   r  zNvizToolWindow._createControl@  s    VT
$$r6EE2JENNR__4r}}DEJEyy1X1X
  *6*F%f%Fx 7KKT!W-7KK22DG<%||~T
8biihb>Q>Q
 	VOOG$7IIb''a1IIb''a1!ZZ\T
6r`   c           
         t        |t        j                  t        d            }t        |t        j                  t        d            }t        |t        j                  t        d            }t        |t        j                  t        d            }t        |t        j                  t        d            }t        |t        j                  t        d            }	t        |t        j                  t        d            }
t        |t        j                  t        d	            }d
}t        j
                  dk(  rd}|j                  |j                               d   |z   }t        ||||||	|
|fd      D ]Y  \  }}|j                  |df       |j                  t        j                  | j                         |j                  |dz   |z          [ |j                  |dt        j                         |j                  |dt        j                         |j                  |	dt        j                         |j                  |dt        j                         |j                  |
dt        j                         |j                  |dt        j                         |j                  |dt        j                         |j                  |dt        j                         y)z/Create 'compass' widget for light and view pageWr   NSENWNESESW   darwinr"  r   )rC  nser  r  r  r  r:  r@   r   r   r   r   r   r  r   r   r   N)r   rL   r   r@   sysplatformGetTextExtentGetLabelzip
SetMinSizerK   r  
OnLookFromr  r  r  )r[   r   r   r   rC  r  r  r  r  r  r  r  paddingminWidthr=   r   s                   r_   r  zNvizToolWindow._createCompassx  s   5RYYaf55RYYaf55RYYaf55RYYaf5Ebiiqw7Ebiiqw7Ebiiqw7Ebiiqw7<<8#G##BKKM215?1aRR(*V
 	+IC NNHb>*HHR]]DOO4KKs
T)*	+ 			"&r	7		!boo	6		"&r	7		!boo	6		"&r	7		!boo	6		"&r	7		!boo	6r`   c                     t        j                  |      D ]O  }t        ||   t        i             r)t        j                  ||         D ]  }||k(  s	|c c S  D||   |k(  sM|c S  y rF  )r1  iterkeys
isinstancer   rA  )r[   r   r]   r   r=   s        r_   __GetWindowNamezNvizToolWindow.__GetWindowName  sl    LL& 	 D$t*d2h/>>$t*5 $Cby#$ :#K	  r`   c                    dD ]  }t        j                  | j                  d   |         D ]j  }	 |dk(  r&t        | j                  j
                  |   d         }n| j                  j                  |   d   }| j                  |      j                  |       l  | j                  | j                  d   d         }|j                  | j                  j                  d   d   | j                  j                  d   d         \  }}|j                  ||fd	
       |j                  d       | j                  | j                  j                  d   d         }| j                  j                  t!        |             | j#                          | j                  j                  d       d| j                  j$                  d<   | j                  j                  d	       y# t        $ r d}Y rw xY w)zQUpdate view from settings values
        stored in self.mapWindow.view dictionary)r   r   r   r   r3   r   rK  r:  r|   r  r  Tr   scaleFr   r   r  r1   N)r1  rA  r=   r  r9   r}   r3   KeyErrorrv   rw   	UpdatePosr  rJ   r9  r;   
SetBgColorr  rW   rI   )r[   controlr=   rK  viewWinr  r  r   s           r_   rE   zNvizToolWindow.UpdateSettings  s    > 
	9G~~dhhv&6w&?@ 	9(* #DNN$8$8$A'$J K $ 3 3G <W E ##C(11%8	9
	9 %%dhhv&6z&BC  NN
+C0$..2E2Ej2QRU2V
1 	!Qt,$$T^^%8%8%Fw%OP  U,u5).g&t$'   Es   AGG)(G)c                 v    |j                         | j                  _        | j                  j                          y)r  N)r=  r;   r  DrawLightingModelr   s     r_   r  zNvizToolWindow.OnShowLightModel  s%    "'//"3'')r`   c                    | j                  | j                  d   |j                               }|sy| j                  |j                               j	                         }|| j
                  j                  d   d<   t        j                  | j                  d   |         D ]"  }| j                  |      j                  |       $ | j                          |j                          y)zPosition of the light changingr~   Nr|   r  )r@  r=   r   rv   r  r9   r~   r1  rA  rw   r   r   )r[   r   rB  rK  r=   s        r_   r  zNvizToolWindow.OnLightChange  s    &&txx'8%++-H##EKKM2;;=05Z(->>$((7"3G"<= 	5C$--e4	5 	

r`   c                 (    | j                  d       y)zLight changedTr   N)r   r   s     r_   r  zNvizToolWindow.OnLightChanged  s    D)r`   c                     t        |j                               | j                  j                  d<   | j	                  d       |j                          y)zColor of the light changedr   Tr   N)tupler  r9   r~   r   r   r   s     r_   r  zNvizToolWindow.OnLightColor  s<    (-enn.>(?W%D)

r`   c                     | j                   j                  }| j                  || j                  d   |       | j	                          |j                          y)z!Light brightness/ambient changingr~   N)r9   r~   rD  r=   r   r   )r[   r   r   s      r_   r  zNvizToolWindow.OnLightValue  s?    ~~##eTXXg.5

r`   c                    |j                         }t        |      | j                  j                  d   d<   t	        |d         dz   t	        |d         z   dz   t	        |d         z   }| j
                  j                  t	        |             | j                  j                         r| j                  j                  d       yy)	zBackground color changedr   r   r   r  r    r   FN)
r  r  r9   r3   r  r;   r  r7   r-  rJ   )r[   r   r   s      r_   r  zNvizToolWindow.OnBgColor  s     5:5\L)'2E!H#c%(m3c9CaMI  U,??))+NN""5) ,r`   c                     |j                         }	 | j                  |d      d   }| j                  |d      }| j                  dd       y#  | j                  dd       Y yxY w)z,Surface selected, currently used for fringesrb   r  rm   ro   FNT)	GetStringr  r  r  r[   r   r   r   ry  s        r_   r  zNvizToolWindow.OnSetSurface  sj     	11$1I)TD
 ''h'?$'	OOHe,s   A A$c                    |j                         }	 | j                  |d      d   }| j	                  |d      }| j                  dd       | j                  ||d       y# t        $ r}| j                  dd       Y d}~yd}~ww xY w)z(Raster map selected, update surface pagerb   r  rm   FNT
updateName)r  r  	TypeErrorr  r  UpdateSurfacePage)r[   r   r   r   r  ry  s         r_   r  zNvizToolWindow.OnSetRaster  s     	11$1I)TD
 ''h'?	4(udu=  	OOIu-	s   A" "	B+BBc                     |j                         }	 | j                  |d      d   }| j                  |d      }| j                  dd       | j	                  ||d       y#  | j                  dd       Y yxY w)z+Vector map selected, update properties pagerc   r  FNTr  )r  r  r  r  UpdateVectorPager  s        r_   rQ  zNvizToolWindow.OnSetVector  s     	11$1I(SD ''h'?$'eTe<	OOHe,   A" "A8c                     |j                         }	 | j                  |d      d   }| j                  |d      }| j                  dd       | j	                  ||d       y#  | j                  dd       Y yxY w)z+3D Raster map selected, update surface pagerd   r  rp   FNTr  )r  r  r  r  UpdateVolumePager  s        r_   r  zNvizToolWindow.OnSetRaster3D  s     	11$1LXVD
 ''k'B$'eTe<	OOHe,r  c                    | j                  | j                  d   |j                               }|sy| j                  |j                               j	                         }| j                  | j                  d   |   d         }|dk(  rd|cxk  rdk  sy y| j                  ||       |dk(  r| j                  j                  }n| j                  j                  }|d	k(  r|dk\  r| j                  d
       n| j                  d       |dv rt        }nt        } ||      ||   d<   t        j                  | j                  d   |         D ]"  }| j                  |      j                  |       $ d| j                  j                  d   d<   d
| j                  j                  d<   | j                   j#                         r| j                  j%                  d       |j'                          y)z!Change view, render in quick moder3   Nr   r   r   r   r   rK  r   r   Tr   F)r   r   rK  rQ  r  r1   )r@  r=   r   rv   r  rJ  r9   r}   r3   r   r  floatr1  rA  rw   rI   r7   r-  rJ   r   )r[   r   rB  rK  r   r3   convertr=   s           r_   r  zNvizToolWindow.OnViewChange%  s    &&txx'7G##EKKM2;;=$$TXXf%5g%>x%HIgqE'8S'8 (9fE:h>>''D>>&&Dh5A:T*U+((GG!(Wg>>$((6"27";< 	5C$--e4	5 .3U#E*)-g&??))+NN""5)

r`   c                     d| j                   j                  d<   | j                   j                  d       | j                          	 |j	                          y# t
        $ r Y yw xY wz'View changed, render in full resolutionFr1   N)r9   rI   rJ   rE   r   AttributeErrorr   s     r_   r	  zNvizToolWindow.OnViewChangedO  sT    ).g&u%	JJL 		s   A 	A#"A#c                     d| j                   j                  d<   | j                  |       | j                  d       | j	                          |j                          yr  )r9   rI   r  r	  rW   r   r   s     r_   r
  z NvizToolWindow.OnViewChangedTextY  sD    ).g&% 4 

r`   c                    | j                  |j                               j                         }|dk(  r| j                  j	                          | j
                  j                  d   }| j                  j                         \  |d<   |d<   |d<   d| j
                  _        | j
                  j                  d       y|dk(  rvd	| j
                  j                  d
   d<   d	| j
                  j                  d
   d<   | j                  d       | j                          | j
                  j                  d       y| j                  |j                               j                         rO| j                  j                          d| j
                  j                   d<   | j
                  j#                  d       yd| j
                  j                   d<   | j
                  j#                  d       y)zLook here/centerr   focusr  r  r  TFr         ?r|   r   lookHerer  crossdefaultN)rv   r   ru   r;   LookAtCenterr9   r}   GetFocussaveHistoryrJ   r3   r   rE   r  r7   RaisemouseSetNamedCursor)r[   r   r   r  s       r_   r  zNvizToolWindow.OnLookAtb  sq   ""5;;=199;8MM&&(NN((1E151G1G1I.E#Jc
E#J)-DNN&NN""5)U]36DNN
+C036DNN
+C0T*!NN""5)""5;;=1::<%%'.8$$U+--g6.7$$U+--i8r`   c                     | j                   j                          | j                          | j                   j                  d       y)z!Reset to default view (view page)FN)r9   	ResetViewrE   rJ   r   s     r_   r  zNvizToolWindow.OnResetViewz  s0      "u%r`   c                 z   t        j                  | j                  d   d         D ]t  }|| j                  d   d   d   k(  r!| j                  |      j	                  d       <|| j                  d   d   d   k(  rU| j                  |      j                  d       v | j                  d      }d|d   d   d<   d|d   d   d<   d|d   d   d	<   d
|d   d   d<   t        |      }t        j                  | j                  |       | j                  j                         r| j                  j                  d       y
y
)zReset position of surfacerm   r|   r  r   r   r   r  r  r  Nupdater8  Fr1  rA  r=   rv   r  rw   r  r   rL   r   r9   r7   r-  rJ   r[   r   r=   r   s       r_   r  z%NvizToolWindow.OnResetSurfacePosition  s6    >>$((9"5j"AB 	5Cdhhy)*5f==##C(55a8+J7@@##C(11!4	5   ++,Y
#C(+,Y
#C(+,Y
#C(04Y
#H-"-
T^^U+??))+NN""5) ,r`   c                 l   | j                  |j                               j                         }|j                  d      d   }|j                  d      d   dk(  rd}| j                  j
                  }nd}| j                  j                  }|dk(  rd|d   d	<   d
|d   d<   n|dk(  rd|d   d	<   d|d   d<   n|dk(  rd|d   d	<   d|d   d<   nm|dk(  rd
|d   d	<   d|d   d<   nW|dk(  rd
|d   d	<   d
|d   d<   nA|dk(  rd|d   d	<   d
|d   d<   n+|dk(  rd|d   d	<   d|d   d<   n|dk(  rd
|d   d	<   d|d   d<   |dk(  r#| j                  d       | j                          n| j                          | j                  | j                  d   d         }|j                  | j                  j                  d   d	   | j                  j                  d   d         \  }}|j                  ||fd       |j                  d       d| j                  j                  d<   | j                  j                  d       y)z)Position of view/light changed by buttonsr@   r    r   r3   r~   r  r  r|   r          r  r        ?r  rC  r  r  r  r  Tr   r  Fr1   N)rv   r   ru   splitr9   r3   r~   r   rE   r   r=   r  r  rJ   rI   )	r[   r   r   
buttonNamer   r   lightWinr  r  s	            r_   r  zNvizToolWindow.OnLookFrom  sz   ""5;;=199;ZZ_Q'
::c?1'D>>&&DD>>''D$'DS!$'DS!3$'DS!$'DS!3$'DS!$'DS!3$'DS!$'DS!4$'DS!$'DS!4$'DS!$'DS!4$'DS!$'DS!4$'DS!$'DS!6>T*!!**488G+<Z+HIH%%$$Z05$$Z05DAq MMq!fDM1U#).g&u%r`   c                    | j                   j                  syt        j                         j	                          | j                  | j                  d   |j                               }|s0| j                  | j                  d   |j                               }d}nd}|j                         }| j                  |   |   d   r|dz  }|dk(  rd}d}n|dk(  r5d}| j                  | j                  |   |   d	         j                         }n|d
k(  rd}|dk(  rD| j                  | j                  |   |   d         j                         }| j                  |      }nC| j                  | j                  | j                  |   |   d         j                         d      }| j                  ||       | j                  | j                  |   d	         j                         }|dk(  r,| j                  |d      }|t!              dd||   d   |<   nd| j                  |d      }| j                  | j                  d   d         }	|	j                         }
|
dk7  r|t!              dd||   d   |
   |<   t#        |      }t        j$                  | j                   |       | j&                  j)                         r| j                   j+                  d       yy)z,Set surface attribute -- use -- map/constantNrm   rp   r  r    r   r'  Trn   r   Fr   r  r6  r  r  rn   rb   r  rn   rK  r  	attributerd   r  r:  
isosurfacer8  )r9   initrL   GetAppYieldr@  r=   r   r   rv   r  	GetColourr9  r4  r  r  r  r   r   r7   r-  rJ   )r[   r   r  r  rz   useMaprK  r   r   ru  r]   s              r_   r  zNvizToolWindow.OnMapObjUse  s   ~~""
		 $$TXXi%8%++-H((();U[[]KEH H&&(	88He$Z0NI>FE!^F''(:5(A%(HIRRTE!^F++HHX&u-g6)+  ,,U3((''(:5(A'(JKTTV# ) 
 	heH""488H#5e#<=FFHy 11$1IDU2DN;'. 11$1LD&&txx'9*'EFD""$BRx! Z";X|,R07 #-
T^^U+??))+NN""5) ,r`   c                    t        j                  | j                  |         D ]P  \  }}|dv rt        |t              rt        j                  | j                  |   |         D ]  \  }}t        |t              rpt        j
                  | j                  |   |   |         D ]D  }t        |t              rt        |t              s%| j                  |      j                  |       F t        |t              rt        |t              s| j                  |      j                  |        t        |t              rt        |t              s1| j                  |      j                  |       S y)z"Enable/disable all widgets on page)rn   rm   r   r
  N)
r1  r2  r=   r  rq  rA  boolr  rv   r  )r[   r   r~  ri   r  skeysitemssitems           r_   r  zNvizToolWindow.EnablePage
  s&   txx~6 	>IC99$%#&==$1D#E 	GKD%!%.&)nnTXXd^C5H5N&O LF#-fd#;
6SV@W $ 3 3F ; B B7 KL  *%6:eS;Q //6==gF	G "$-*T32G''-44W=!	>r`   c                 l   |dv rd}nd}|dk(  r|dk(  ry|du r|dk7  r3| j                  | j                  |   |   d         j                  d       | j                  |   |   d	   r3| j                  | j                  |   |   d	         j                  d
       | j                  | j                  |   |   d         j                  d|z          y|d
u r| j                  | j                  |   |   d         j                  d
       | j                  |   |   d	   r3| j                  | j                  |   |   d	         j                  d       | j                  | j                  |   |   d         j                  d|z          y| j                  | j                  |   |   d         j                  d       | j                  | j                  |   |   d         j                  d
       | j                  |   |   d	   r4| j                  | j                  |   |   d	         j                  d
       yy)z1Update dialog widgets when attribute type changedrN  r:  r   rp   rM  NTrn   r  Fr  r    r   )rv   r=   r  r  )r[   r  r  rn   incSels        r_   r  zNvizToolWindow.SetMapObjUseMap  s"   ..FFxEVO$; ##DHHX$6u$=e$DELLTRxx!%(1##DHHX$6u$=g$FGNNuU 25 9% @ANNF
 E\ 25 9% @AHHOxx!%(1##DHHX$6u$=g$FGNNtT 25 9% @ANNF
  25 9% @ANNqQ 25 9% @AHHOxx!%(1##DHHX$6u$=g$FGNNuU 2r`   c                 n    | j                   rd| _         y| j                  d|j                                y)Set surface attributeFNrm   r  winIdrH   SetMapObjAttrbr   r   s     r_   r  zNvizToolWindow.OnSurfaceMap=  s/    "'DYekkmDr`   c                 z   | j                   j                  sy| j                  | j                  |   |      }|sy|dk(  r|dk(  s| j	                  | j                  |   |   d         j                         }| j                  |   |   d   r|dz  }|dk(  rd}d}n|dk(  r5| j	                  | j                  |   |   d	         j                         }d
}n|dk(  rD| j	                  | j                  |   |   d         j                         }| j                  |      }nC| j                  | j	                  | j                  |   |   d         j                         d      }d}n4d}| j	                  | j                  |   |   d         j                         }| j                  s| j	                  | j                  |   d	         j                         }|dk(  r,| j                  |d      }|t        |      dd||   d   |<   n| j                  |d      }| j	                  | j                  d   d         }	|	j                         }
|
dkD  r|t        |      dd||   d   |
   |<   |dk(  rk| j	                  | j                  d   d         }	|	j                         }|	j                  |t        d      dt        |             |	j                  |       t!        |      }t#        j$                  | j                   |       | j&                  j)                         r| j                   j+                  d       yyy)z<Set map object (surface/isosurface) attribute (map/constant)Nrp   rM  r  r  r    r   r'  rn   Tr   r  Fr6  rm   rb   r  r  r  rd   r  r:  r  Level r8  )r9   r  r@  r=   rv   r   r  r  r9  r4  rG   r  r  	SetStringr@   Checkr   rL   r   r7   r-  rJ   )r[   r  r  r  rz   r  rK  r   r   ru  r]   selr   s                r_   r  zNvizToolWindow.SetMapObjAttrbD  s%   ~~""$$TXXh%7?H$&++"5)%0ln  xx!%(4Q	A~a++DHHX,>u,Ee,LMVVXG# //*51':ik  !007E ,,++ HHX.u5g>"(*"'	 - E F''(:5(A'(JKTTVE  &&txx'9%'@AJJLD9$55dH5M! Z"6X{+E2 55dK5P**488H+=j+IJ&&(7%!$U"&?DN<04U;
 #22488H3Ej3QR"//1sqz3u:,NO

3 'D1ELL/--/&&u- 0; !r`   c                     | j                          | j                  j                         r| j                  j	                  d       yy)zDraw resolution changedFN)SetSurfaceResolutionr7   r-  r9   rJ   r   s     r_   r  z"NvizToolWindow.OnSurfaceResolution  s5    !!#??))+NN""5) ,r`   c                 d   | j                  | j                  d   d   d         j                         }| j                  | j                  d   d   d         j                         }| j                  d      }||dd|d   d   d<   t	        |      }t        j                  | j                  |       y)	zSet draw resolutionrm   r  r  r  Nr  r  r  r&  r8  )rv   r=   r  r  r   rL   r   r9   )r[   r  r  r   r   s        r_   r  z#NvizToolWindow.SetSurfaceResolution  s    $$HHY'5

(* 	 ""488I#6v#>z#JKTTV  +1
Y- #-
T^^U+r`   c                 l   | j                  | j                  d   d   d         j                         }| j                  | j                  d   d   d         j                         }|dk(  r4| j                  | j                  d   d   d         j                  d       n8|dk(  r3| j                  | j                  d   d   d         j                  d	       | j                  | j                  d   d   d
         j                         }| j                  j
                  j                  |||      \  }}||fS )Set draw moderm   r  r  r(   r   r  Tr    Fr  )rv   r=   r   r  r9   nvizDefaultGetDrawMode)r[   r  r(   r  rK  r  s         r_   SetSurfaceModezNvizToolWindow.SetSurfaceMode  s    ""488I#6v#>v#FGTTV##DHHY$7$?$HIVVXA: 3F ;L IJQQRVWaZ 3F ;L IJQQRWX##HHY'	2

,. 	 nn00<<T5%Ptd{r`   c                 .   | j                         \  }}| j                  d      }||dd|d   d   d<   t        |      }t        j                  | j
                  |       | j                  j                         r| j
                  j                  d       yy)r  rm   NrK  r  r  r  r  r8  F)	r  r  r   rL   r   r9   r7   r-  rJ   )r[   r   rK  r  r   s        r_   r  zNvizToolWindow.OnSurfaceMode  s    ))+t  +494SW*XY' #-
T^^U+??))+NN""5) ,r`   c                    | j                         \  }}| j                  | j                  d   d   d         j                         }| j                  | j                  d   d   d         j                         }| j                  | j                  d   d   d         j	                         }| j                  |      }| j                  j                  d      D ]{  }| j                  |d      }	|	sd	|	d   d   d
<   ||dd|	d   d   d<   ||dd|	d   d   d<   |dd|	d   d   d<   t        |	      }t        j                  | j                  |       } | j                  j                         r| j                  j                  d       yy)z<Set draw mode (including wire color) for all loaded surfacesrm   r  r  r  r  rb   )r   r  Tr  Nr  r  r  r&  rK  r  r8  F)r  rv   r=   r  r  r9  r9   GetLayerNamesr  r   rL   r   r7   r-  rJ   )
r[   r   rK  r  r  r  r   cvaluer   r   s
             r_   r  zNvizToolWindow.OnSurfaceModeAll  s   ))+t$$HHY'5

(* 	 ""488I#6v#>z#JKTTV##HHY'5

)+ 	 %%e,NN00h0? 	0D11$1ID-1DOF#E*/DOF#F+ !5DOF#L1
 ?EPT4UDOF#L1 'D1ELL/)	0, ??))+NN""5) ,r`   c                 f    t        |d         dz   t        |d         z   dz   t        |d         z   S )zhConvert color tuple to R:G:B format

        :param color: tuple

        :return: string R:G:B
        r   r  r    r   )r  )r[   r   s     r_   r9  zNvizToolWindow._getColorString  s6     58}s"Sq]2S83uQx=HHr`   c                 `    t        j                  t        t        |j	                  |             S )zConvert color string (R:G:B) to wx.Colour

        :param color: string
        :param delim: delimiter

        :return: wx.Colour instance
        )rL   Colourrn   r  r  )r[   r   delims      r_   r3  z"NvizToolWindow._getColorFromString  s#     yy#c5;;u#5677r`   c                     t        ddd|      }|rUg }|j                  d      j                  d      D ].  }|j                  t	        |j                  d      d                0 |S y)	z'Gelper func for getting range of 3d mapzr3.infoTr)readr|  rn   
=r    )r  rE  )r   stripr  rv  r  )r[   r   retr   rK  s        r_   _get3dRangezNvizToolWindow._get3dRange  sc    SdCE4..t4 9U5;;s#3A#6789Lr`   c                 h    t        |      }|rt        |dz  dz        }|S t        |dz  dz        }|S )z1Convert values 0 - 255 to percents and vice versag     o@r         Y@rI  )r  )r[   rK  r7  s      r_   r4  zNvizToolWindow._getPercent  sB    E
+,E  +,Er`   c                 D   | j                  d      }| j                  |j                               }|dd|d   d   d<   t        |      }t	        j
                  | j                  |       | j                  j                         r| j                  j                  d       yy)zSet wire colorrm   Nr  r  r  r8  F)
r  r9  r  r   rL   r   r9   r7   r-  rJ   )r[   r   r   rK  s       r_   r  z!NvizToolWindow.OnSurfaceWireColor  s      +$$U^^%56:?40PY- #-
T^^U+??))+NN""5) ,r`   c                 `   | j                  d      }|d   d   d   }| j                  | j                  d   d   d         j                         }| j                  | j                  d   d   d         }| j                  | j                  d   d   d         }| j                  j                         }| j                  j                         }|d   |d	   z
  }| j                  j                  |      \  }	}
}|d	k(  r;|j                  d
|z  d|z         |j                  |	       |j                  |	       y|dk(  r;|j                  d
|z  d|z         |j                  |
       |j                  |
       y|j                  d
|z  d|z         |j                  |       |j                  |       y)zSurface position, axis changedrm   r;  r]   r|   r  r   r,   r    r   r2   N)
r  rv   r=   r   r;   
GetLongDim	GetZRangeGetSurfacePositionr  rw   r[   r   r   r]   r  r   r,   xydimzdimr  r  r  s               r_   r  zNvizToolWindow.OnSurfaceAxis  s     +)_X&t,""HHY
+F3

,. 	 $$TXXi%8%DX%NO""488I#6z#B6#JK((*}}&&(Awa --22261a19OOBJE	2OOAMM!QYOOBJE	2OOAMM!OOBIq4x0OOAMM!r`   c                 f   | j                  | j                  d   |j                               }|sy| j                  | j                  d   d   d         j	                         }| j                  |j                               j                         }| j                  | j                  d   |   d         }| j                  ||       t        j                  | j                  d   d         D ]O  }|| j                  d   d   d   | j                  d   d   d   fv r0| j                  |      j                  |       Q | j                  d      }|d   d   d	   }| j                  j                  |      \  }	}
}|d
k(  r|}	n
|dk(  r|}
n|}|	|d   d   d<   |
|d   d   d<   ||d   d   d<   d|d   d   d<   t        |      }t        j                  | j                   |       d| j                   j"                  d<   | j$                  j'                         r| j                   j)                  d       yy)zSurface positionrm   Nr|   r  r   r  r   r;  r]   r   r    r  r  r  r  r8  Tr1   F)r@  r=   r   rv   r   r  rJ  r1  rA  rw   r  r;   r  r   rL   r   r9   rI   r7   r-  rJ   r[   r   rB  r  rK  r   r=   r   r]   r  r  r  s               r_   r  z NvizToolWindow.OnSurfacePosition;  s.   &&txx	':EKKMJ""HHY
+F3

,. 	 ##EKKM2;;=$$TXXi%8%A(%KLfE:>>$((9"5j"AB 	9C#J/7#J/8  ##C(11%8	9   +)_X&t,--22261a19AQYAA+,Y
#C(+,Y
#C(+,Y
#C(04Y
#H- #-
T^^U+)-g&??))+NN""5) ,r`   c                 l    d| j                   j                  d<   | j                   j                  d       y)zSurface position changedFr1   Nr9   rI   rJ   r   s     r_   r  z'NvizToolWindow.OnSurfacePositionChangedj  (    ).g&u%r`   c                 H    | j                  |       | j                  d       y)z$Surface position changed by textctrlN)r  r  r   s     r_   r  z$NvizToolWindow.OnSurfacePositionTexto  s    u%%%d+r`   c                    |dk7  r|dk7  ry| j                   d   |   j                         D ]3  }|dk(  r
t        | j                   d   |   |   t        i             r| j                   d   |   |   j                         D ]q  }|r7| j	                  | j                   d   |   |   |         j                  d       <| j	                  | j                   d   |   |   |         j                  d       s |r5| j	                  | j                   d   |   |         j                  d       | j	                  | j                   d   |   |         j                  d       6 y)zaEnable/disable lines/points widgets

        :param vecType: vector type (lines, points)
        r7  rD  Frc   r8  T)r=   keysr  r   rv   r  )r[   vecTyper~  r=   swins        r_   UpdateVectorShowzNvizToolWindow.UpdateVectorShowt  s_   
 g'X"588H%g.335 	XCf}$((8,W5c:DHE HHX.w7<AAC (D++ HHX.w7<TB &,++ HHX.w7<TB &-( ''(:7(CC(HIPPQUV''(:7(CC(HIPPQVW#	X& r`   c                    |j                         }|| j                  d   d   d   k(  rd}d}nd}d}|j                         }| j                  | j                  d   d         j	                         }| j
                  j                  d|	      }|D ]$  }| j
                  j                  |d
      dk(  s$ n | j                  d      d   }	|r| j                  j                  |d       n| j                  j                  |d       | j                  ||       |rZ	 |	|   d   d   }
|
dkD  rI| j                  j                  ||
|       t        |	      }t!        j"                  | j                  |       | j$                  j'                         r| j                  j)                  d       |j+                          y# t        $ r d}
Y w xY w)zShow vector lines/pointsrc   r7  r8  FrD  Trn   r   r  r   rh   )rD  rv  )rD  remover;  r]   r:  r   r8  N)r   r=   r=  rv   r  r6   r  rr   r  r9   
LoadVectorUnloadVectorr  r  SetMapObjPropertiesr   rL   r   r7   r-  rJ   r   )r[   r   r  r  rD  checkedr   r  r  r   r]   s              r_   rT  zNvizToolWindow.OnVectorShow  s   DHHX&w/77GFGF//#""488H#5e#<=FFH		((V4(@ 	Dyy%%d%78C	   *84NN%%d6%%HNN''VE'Jgw/']8,T2 Av224WE +5T^^U3??))+NN""5)

  s   F> >GGc                    | j                   j                  d      }|j                         dk(  rt        |      dk  rg| j	                  | j
                  d   d   d         j                  d       | j	                  | j
                  d   d   d         j                  d       y	| j	                  | j
                  d   d   d         j                  d
       | j                  d      }|d   |d   d   d   d<   | j	                  | j
                  d   d   d         j                  |d          n3| j	                  | j
                  d   d   d         j                  d       | j                  |       |j                          y	)z"Display vector lines on surface/3drb   r   r    rc   r7  rm   FrB  NTr  )r9   r  r   lenrv   r=   r  r  r  r#  rU  r   r[   r   rastersr   s       r_   rX  z NvizToolWindow.OnVectorLinesMode  sb   ....x81$7|a##DHHX$6w$?	$JKRR ##DHHX$6w$?$EFSSTUV 27 ;I FGNNtT$$X.D9@DN7#F+I6"7+I6  , 27 ;I FGNNuU5!

r`   c                    | j                  d      }| j                  | j                  d   d   d         j                         }i }| j                  | j                  d   d   d         j	                         dk(  rd|d<   i |d<   | j                  | j                  d   d   d         }t               }t               }t        |j                               D ]B  }|j                  |j                  |             |j                  |j                  |             D ||d   d<   ||d   d	<   nd|d<   d
D ]  }	d|d   d   |	   d<    ||d   d   d   d<   ||d   d   d<   | j                  | j                  d   d   d         j                         }
t        |
t        j                        rnNt        |
d         dz   t        |
d         z   dz   t        |
d         z   }
d|d   d   d   d<   |
|d   d   d   d<   t!        |      }t#        j$                  | j&                  |       | j(                  j+                         r| j&                  j-                  d       yy)zASet vector lines mode, apply changes if auto-rendering is enabledrc   r7  r9  rB  r   rm   r   rK  r8  )r9  r  Nr  r  r   r  r    r   r8  F)r  rv   r=   r  r   ru  r   GetCountrv  r  r=  r  r  r  r   r  r   rL   r   r9   r7   r-  rJ   )r[   r   r   r9  r  r%  rK  r#  rm   r  r   s              r_   rU  zNvizToolWindow.OnVectorLines  s_     *##DHHX$6w$?$HIRRTtxx1':4@ANNPTUU$DL DO++DHHX,>w,G	,RSIFEfG !3!3!56 =Y009:y227;<= (-DOG$&-DOF#DL& 	<E7;DN7#E*84	<49Xw(1*.Xw'##DHHX$6w$?$HISSUeT../aMC'#eAh-7#=E!HME9=DN7#G,X68=DN7#G,W5 #-
T^^U+??))+NN""5) ,r`   c                    | j                   j                  d      }|j                         dk(  rt        |      dk  rg| j	                  | j
                  d   d   d         j                  d       | j	                  | j
                  d   d   d         j                  d       y | j	                  | j
                  d   d   d         j                  d	       | j                  d      }||d   d   d
   d   d<   d|d   d   d
   d<   | j	                  | j
                  d   d   d         j                  |d          nR| j                  d      }d	|d   d   d
   d<   | j	                  | j
                  d   d   d         j                  d       d |d   d   d
   d<   | j                  |       |j                          y )Nrb   r   r    rc   rD  rm   FrB  Tr  rK  r  )r9   r  r   r%  rv   r=   r  r  r  r#  rf  r   r&  s       r_   rh  z!NvizToolWindow.OnVectorPointsMode  s   ....x81$7|a##DHHX$6x$@$KLSS ##DHHX$6x$@$FGTTUVW 28 <Y GHOOPTU$$X.DCJDN8$V,Y7@5:DN8$V,T2"8,Y7  ,$$X.D59DN8$V,T2 28 <Y GHOOPUV59Xx (2E"

r`   c                    |j                         }|| j                  d   d   d   j                         v rd}nd}| j                  |      j	                         }| j                  | j                  d   |   d   d         }| j                  ||       t        j                  | j                  d   |   d         D ]"  }| j                  |      j                  |       $ | j                  d      }|d d|d   |   d<   t        |      }t        j                  | j                  |       d	| j                  j                  d
<   d	| j                  j                  d|z   <   | j                  j                  d       |j!                          y )Nrc   r7  r   rD  r   r  r  r8  Tr1   vF)r   r=   valuesrv   r  rJ  r1  rA  rw   r  r   rL   r   r9   rI   rJ   r   )r[   r   r]   r$  rK  r   r=   r   s           r_   r]  zNvizToolWindow.OnVectorHeight  sb   [[](#G,X6==??EE##B'002$$TXXh%7%>x%H%RSfE:>>$((8"4U";H"EF 	5C$--e4	5   *49T*JXuh' #-
T^^U+)-g&-1cEk*u%

r`   c                 :   | j                  |       |j                         }|| j                  d   d   d   j                         v rd}nd}d| j                  j
                  d<   d| j                  j
                  d|z   <   | j                  j                  d       y)	0Vector height changed, render in full resolutionrc   r7  r   rD  Fr1   r,  N)r]  r   r=   r-  r9   rI   rJ   )r[   r   r]   r$  s       r_   r^  z!NvizToolWindow.OnVectorHeightFull7  s    E"[[](#G,X6==??EE).g&-2cEk*u%r`   c                 &    | j                  |       y)r/  N)r^  r   s     r_   r_  z!NvizToolWindow.OnVectorHeightTextE  s     	&r`   c                    |j                         }|| j                  d   d   d   k(  rd}nd}| j                  | j                  d   |   d         }g }g }t        |j	                               D ]B  }|j                  |j                  |             |j                  |j                  |             D | j                  d      }||d|d   |   d   d<   d|d   |   d   d<   t        |	      }t        j                  | j                  |       | j                  j                         r| j                  j                  d
       yy)z/Reference surface for vector map (lines/points)rc   r7  rm   rD  )rK  r8  r  Nr  r8  F)r   r=   rv   r   r)  rv  r=  r  r  r   rL   r   r9   r7   r-  rJ   )	r[   r   r]   r$  	checkListr#  surfacesr  r   s	            r_   r\  zNvizToolWindow.OnVectorSurfaceK  s6   [[](#G,Y77EE''(:5(A)(LM	9--/0 	8ENN9..u56OOI//67	8   *=Ew3WXuf%i026Xuf%h/ #-
T^^U+??))+NN""5) ,r`   c                 J   | j                  d      }| j                  | j                  d   d   d         j                         }| j                  | j                  d   d   d         j	                         }dD ]  }d|d   d   |   d<    ||d   d   d   d<   ||d   d   d   d<   | j                  | j                  d   d   d	         j                         }t        |t        j                        rnNt        |d
         dz   t        |d         z   dz   t        |d         z   }d|d   d   d	   d<   ||d   d   d	   d<   t        |      }t        j                  | j                  |       | j                  j                         r| j                  j!                  d       yy)zBSet vector points mode, apply changes if auto-rendering is enabledrc   rD  r   rK  )r   rK  Nr  rK  r   r   r  r    r   r8  F)r  rv   r=   r  r   r  r  r  r   r  r   rL   r   r9   r7   r-  rJ   )r[   r   r   r   rK  r  r   s          r_   rf  zNvizToolWindow.OnVectorPointsd  s     *""488H#5h#?#GHQQS$$HHXx(2

,. 	
 ( 	=E8<DN8$U+H5	=48Xx (16<Xx *73##DHHX$6x$@$IJTTVeT../aMC'#eAh-7#=E!HME:>DN8$W-h79>DN8$W-g6 #-
T^^U+??))+NN""5) ,r`   c                    |s_| j                   d   d   d   d   | j                   d   d   d   d   | j                   d   d   d   d   | j                   d   d   d   d   f}n|j                         f}|D ]  }|| j                   d   d   d   j                         v r#d}|| j                   d   |   d   d   k(  rd}n%d	}n"d}|| j                   d   |   d   d   k(  rd}nd
}| j                   d   |   d   d|z      }| j                   d   |   d   d|z      }| j                  |      j	                         rd}nd}| j                  |      j                  |       | j                  d      }	|dk(  r| j                  | j                   d   d         j	                         }
|	d   |   d   d   sK	 |	d   |   d   d   }| j                  |
      r+| j                  j                  ||      sd|	d   |   d   d<   ||	d   |   d   d|z   <   d|	d   |   d   d<    t        	      }t        j                  | j                  |       | j                  j!                         r| j                  j#                  d       yy# t        $ r Y w xY w)zSwitch on/off thematic mappingrc   rD  r:  r;  r7  rN  r<  r   r   r9  checkbuttonTFrn   	rgbcolumnr;  r]   )r]   r   GRASSRGBr  Nr  r8  )r=   r   r-  rv   r  r  r  HasGRASSRGBr;   CheckColorTabler  r   rL   r   r9   r7   r-  rJ   )r[   r   idsr]   r$  attrTyper6  r7  r#  r   r   s              r_   rV  zNvizToolWindow.OnCheckThematic  s    "8,Z8F"7+J7E"8,Z8E"7+J7E	C ;;="C (	?BTXXh'1*=DDFF (+E2:>|LL&H%H(+E2:>|LL&H&HHHX&u-j9'H:LMEXXh'.z:8h;NOF""5)224'..w7$$X.D 7"**488H+=e+DENNPH~e,Z8E	!(^E28<TB  ++D1$--:W:W! ;X ; NXDN51*=kJ CJDN5!*-eh.>?:>DN5!*-h7Q(	?V #-
T^^U+??))+NN""5) , $ s   1A
J  	JJc                     d}t        |      }t        |j                        r'|j                  d   d   }d|j                  |      v rd}|S )zCheck if GRASSRGB column exist.Fr    tabler9  T)r   r%  ry   GetTableDesc)r[   r   columndbInfor?  s        r_   r:  zNvizToolWindow.HasGRASSRGB  sM    d#v}}MM!$W-EV0077r`   c                 <   |j                         | j                  d   d   d   j                         v rd}nd}|j                         | j                  d   |   d   d   k(  rd}n
|dk(  rd}nd}t        | ||	      }|j	                          |j                          y
)zSet options for thematic pointsrc   rD  r:  r7  r=  r   r   r9  )attributeTypeN)r   r=   r-  r   CentreOnScreenShow)r[   r   r$  r=  ctables        r_   rW  zNvizToolWindow.OnSetThematic  s    ;;=DHHX.x8DKKMMEE;;=DHHX.u5jA-PPHhHH$T5Ir`   c                    |j                         }| j                  | j                  d   d         }| j                  | j                  d   d         }| j                  | j                  d   d         }| j                  | j                  d   d         }|t        k\  r|j	                  d       n|j	                  d       |dk  r|j	                  d       n|j	                  d       |j                         |dz
  k\  r|j	                  d       n|j	                  d       |j                         dk  r|j	                  d       y	|j	                  d       y	)
zFEnable/disable buttons 'add', 'delete',
        'move up', 'move down'rp   r  r  r  r  FTr    N)r)  rv   r=   r#   r  r   )r[   ru  nitemsaddr%  moveDownmoveUps          r_   UpdateIsosurfButtonsz#NvizToolWindow.UpdateIsosurfButtons  s    !!$((8"4X">?$$TXXh%7%DE&&txx'9-'HI$$TXXh%7%DE\!JJuJJtA:MM% MM$&1*,OOE"OOD!"MM% MM$r`   c                    | j                  | j                  d   d   d         j                         }| j                  d      d   }| j                  j                         }| j                  j                         }| j                  d      }|dk(  rj|j                  | j                         |j                  | j                         |j                  dt        d      z         d|d   d   d<   d	|d   d   d
<   ni|j                  | j                         |j                  | j                         |j                  dt        d      z         d|d   d   d<   d|d   d   d
<   |rV| j                  | j                  d   d         j                         }| j                  |d      }| j                  ||d       |j                          |j!                         j#                          y)zChange mode isosurfaces/slicesrp   r  r  r~  r   r)   r}  rK  r  r  zList of slicesr    rV  rn   rd   r  Fr  N)rv   r=   r   r  r  GetContainingSizerr  FindWindowByNamerF  r  r  r@   r  r  r  r   r   r  )r[   r   r  r   r   listBoxr   ry  s           r_   r  zNvizToolWindow.OnVolumeMode  s   ""488H#5f#=f#EFSSU  *84002224''819JJt}}%JJt'Va(=&>>?,-DL )+7DL (JJt}}%JJt'Va(8&99:,-DL )+2DL (&&txx'9%'@AJJLD++D++FE!!%%!@!r`   c                 B    | j                  |j                                y)zSet isosurface/slice draw modeN)SetVolumeDrawModer   r   s     r_   r  zNvizToolWindow.OnVolumeDrawMode  s    u1134r`   c                 Z   | j                  d      d   }|d   d   }| j                  | j                  d   d   d         j                         }| j                  j                  ||       ||d   d   d<   | j                  j                         r| j                  j                  d       yy)	zSet wire box drawingrp   r;  r]   r  r!  r~  FN)
r  rv   r=   r  r;   SetVolumeDrawBoxr7   r-  r9   rJ   )r[   r   r   vidr#  s        r_   r  zNvizToolWindow.OnVolumeDrawBox  s      *848nT"%%dhhx&8&@&GHQQS&&sG4)0VUI&??))+NN""5) ,r`   c                 (   | j                  d      d   }|d   d   }d}|dk(  r
|t        z  }n	|t        z  }| j                  | j                  d   d   d         j                         dk(  r9| j                  j                  ||       d|d   d   d	   d
<   ||d   d   d	   d<   n8| j                  j                  ||       d|d   d   d   d
<   ||d   d   d   d<   | j                  j                         r| j                  j                  d       yy)zSet isosurface draw moderp   r;  r]   r   r  r  r  r  r  r  rK  r  rV  FN)r  r!   r"   rv   r=   r   r;   SetIsosurfaceModeSetSliceModer7   r-  r9   rJ   )r[   rz   r   r]   r  s        r_   rS  z NvizToolWindow.SetVolumeDrawMode(  s#     *84(^D!>GODJDtxx1&9&ABOOQUVVMM++B5<EDL#L1&9=ADL#L1':MM&&r407=DL#G,V48<DL#G,W5??))+NN""5) ,r`   c                 B    | j                  |j                                y)z$Set isosurface/slice draw resolutionN)SetVolumeResolutionr  r   s     r_   r  z!NvizToolWindow.OnVolumeResolution?  s      0r`   c                    | j                  d      d   }|d   d   }| j                  | j                  d   d   d         j                         dk(  r+| j                  j                  ||       ||d   d   d   d	<   n*| j                  j                  ||       ||d   d   d
   d	<   | j                  j                         r| j                  j                  d       yy)zSet isosurface draw resolutionrp   r;  r]   r  r  r   r&  r  rK  rV  FN)r  rv   r=   r   r;   SetIsosurfaceResSetSliceResr7   r-  r9   rJ   )r[   resr   r]   s       r_   r[  z"NvizToolWindow.SetVolumeResolutionC  s      *84(^D!txx1&9&ABOOQUVVMM**2s3@CDL&|4W=MM%%b#.;>DL&w/8??))+NN""5) ,r`   c                    | j                  d      d   }|d   d   }| j                  | j                  d   d         j                         }| j                  j                  |||j                               }|dk(  r|j                         |d   |   d   d<   | j                  j                         r| j                  j                  d	       y
y
)zChange isosurfaces mode inoutrp   r;  r]   r  r    r  rL  rK  FN)r  rv   r=   r   r;   SetIsosurfaceInOutr  r7   r-  r9   rJ   )r[   r   r   r]   	isosurfIdr  s         r_   rR  zNvizToolWindow.OnInOutModeR  s      *84(^D!''(::(FGTTV	mm..r9ellnM!8>CllnDy)'27;??))+NN""5) ,r`   c                 n    | j                   rd| _         y| j                  d|j                                y)r  FNrp   r  r  r   s     r_   rS  z!NvizToolWindow.OnVolumeIsosurfMap_  s/    "'DXU[[]Cr`   c                    | j                  | j                  d   d   d         j                         dk(  rd}nd}|j                         }| j                  | j                  d   |dz            }| j                  d      d   }|d   d	   }|j                         }|dk(  r|j	                  |      rd
|d   |   v rj|d   |   d
   d   \|d   |   d
   d   rd}|d   |   d
   d   }	n|d   |   d
   d   d}|d   |   d
   d   }	| j
                  j                  ||	       n| j
                  j                  ||dd       ny| j
                  j                  ||dd       nZ|j	                  |      r,|d   |   d
   d   }	| j
                  j                  |||	       n| j
                  j                  ||d       | j                  j                         r| j                  j                  d       yy)z9Isosurface/slice checked (->load) or unchecked (->unload)rp   r  r  r   isosurfrV  r  r;  r]   r  r  rn   NTrK  Fr  255rI  )rv   r=   r   r  r=  r;   SetIsosurfaceTranspSetSliceTranspr7   r-  r9   rJ   )
r[   r   r  r  ru  r   rV  r]   rn   rK  s
             r_   r  zNvizToolWindow.OnVolumeCheckf  s   txx1&9&ABOOQUVVDD""$""488H#5dSj#AB  *848nT"!9~~e$\ 22 66\*2.x8?KL)"-h7>" $\ 22 6x @ Il+B/9%@L# $\ 22 6x @ IMM55c2sEJMM55c2ucJ 11#r5%H~~e$Wb)(3G<,,S"e< ,,S"c:??))+NN""5) ,r`   c                    | j                  | j                  d   d   d         j                         dk(  rd}nd}| j                  | j                  d   d         }| j                  | j                  d   d         }|j                         }|d	k(  ry
|dk(  r2|j                  d       |j	                         s|j                          n|| j                  |j                               j                         dz
  k(  r2|j                  d       |j	                         sQ|j                          n@|j	                         s|j                          |j	                         s|j                          | j                  | j                  d   d         j                         }| j                  |d      }|dk(  r,| j                  d      d   d   |   }| j                  |       y
| j                  d      d   d   |   }| j                  |       y
)zIsosurface/Slice item selectedrp   r  r  r   re  rV  r  r  r:  NFr    rn   rd   r  r  )rv   r=   r   r  	IsEnabledr   r)  r  r  r  UpdateVolumeIsosurfPageUpdateVolumeSlicePage)	r[   r   r  winUpwinDownrz   r   ry  r   s	            r_   r  zNvizToolWindow.OnVolumeSelect  s   txx1&9&ABOOQUVVDD##DHHX$6{$CD%%dhhx&8&GH&&(	?!^LL$$& $--ekkm<EEG!KKNN5!??$$$& ??$ ""488H#5e#<=FFH''k'B9$$X.x8FyQD((.$$X.x8A)LD&&t,r`   c                    | j                  | j                  d   d   d         j                         dk(  rd}nd}| j                  | j                  d   |dz            }| j                  | j                  d   d         j                         }| j	                  |d	
      }| j                  d      d   }|d   d   }|j                         }|dk(  r| j                  j                  j                         }	|	d   d   r|j                  |	d   d<   t        | j                  |j                        d   d      x}
|	d   d<   |dk  s||j                         dz
  k\  r,|j                  t        d      j                  |
            }n|j!                  t        d      j                  |
      |dz          |dz   }n| j                  j                  j#                         }d|d   d      }|dk  s||j                         dz
  k\  r,|j                  t        d      j                  |            }n4|j!                  t        d      j                  |      |dz          |dz   }|j%                  |       |j'                  |       |dk(  r;|d   j)                  |	       | j*                  j-                  |t/        
             n|d   j)                  |       | j*                  j1                  |      }| j*                  j3                  ||dz
  |d   d   |d   d   |d   d   |d   d    |d   d!   |d   d"   |d   d   	       t5        |#      }t7        j8                  | j                  |       | j;                  |       |dk(  r| j=                  	       n| j?                         | j@                  jC                         r| j                  jE                  d$       |jG                          y%)&z$Add new isosurface/slice to the listrp   r  r  r   re  rV  r  rn   rd   r  r;  r]   r   rK  r   r   rM  r    zLevel {level})levelr  r  r  r|   r  zSlice parallel to {axis})r  r  r[  r\  r`  ra  rb  rc  r8  FN)$rv   r=   r   r  r  r  r9   r  SetIsosurfaceDefaultPropr   roundr  r)  r  r@   rR  r  SetSliceDefaultPropr  r  insertr;   AddIsosurfacer  AddSliceSetSlicePositionr   rL   r   rM  rk  rl  r7   r-  rJ   r   )r[   r   r  ru  r   ry  r   r]   r  isosurfDatarq  r  	sliceDatar  nslices                  r_   r  zNvizToolWindow.OnVolumeAdd  s   txx1&9&ABOOQUVVDD""488H#5dSj#AB""488H#5e#<=FFH''k'B  *84(^D!!9..44MMOK7#E*05

G$W-38  ejj 1!4a4 EK'0 Qw#1!44{{/(:(A(A(A(N{O?+222?S1W   Qw22FFHI"9Z#8#@ADQw#1!44{{*D(E(L(LRV(L(W{X56==4=HcTUg   Qw

4$9%%dK8MM''E%L9M  y1]]++B/FMM**
*%d+*%d+*%d+*%d+*%d+*%d+*%f-
 #-
T^^U+ 	!!$'9((5&&y1??))+NN""5)

r`   c                    | j                  | j                  d   d   d         j                         dk(  rd}nd}| j                  | j                  d   |dz            }|j                         }|j                  |       |j	                         dkD  r"|j                  |j	                         dz
         | j                  | j                  d   d	         j                         }| j                  |d
      }| j                  d      d   }|d   d   }|dk(  r#|d   |= | j                  j                  ||       n"|d   |= | j                  j                  ||       |j	                         dkD  rQ|dk(  r&| j                  |d   |j                                   nQ| j                  |d   |j                                   n+|dk(  r| j                  |d          n| j                  d       | j                  |       | j                  j!                         r| j"                  j%                  d       |j'                          y)z!Remove isosurface/slice from listrp   r  r  r   re  rV  r  r    rn   rd   r  r;  r]   r  r  NF)rv   r=   r   r$  r)  r  r  r  r  r;   DeleteIsosurfaceDeleteSlicerk  rl  rM  r7   r-  r9   rJ   r   )	r[   r   r  ru  r]   r   ry  r   rV  s	            r_   r  zNvizToolWindow.OnVolumeDelete  s   txx1&9&ABOOQUVVDD""488H#5dSj#AB  B==?Qdmmo12""488H#5e#<=FFH''k'B  *848nT" 9\"2&MM**33Wb!MM%%c2. ==?Qy ,,T,-?@Q@Q@S-TU**4=9J9J9L+MNy ,,T+->?**40!!$'??))+NN""5)

r`   c                 4   | j                  | j                  d   d   d         j                         dk(  rd}nd}| j                  | j                  d   |dz            }|j                         }|dk  ry	| j                  | j                  d   d
         j                         }| j	                  |d      }| j                  d      d   }|d   d   }|j                         }	|j                  |	|dz
         |j                  |dz
         |j                  |dz
         |j                  |dz          |dk(  rE|d   j                  |dz
  |d   |          |d   |dz   = | j                  j                  ||d       nD|d   j                  |dz
  |d   |          |d   |dz   = | j                  j                  ||d       | j                  |       | j                   j#                         r| j$                  j'                  d       |j)                          y	)z$Move isosurface/slice up in the listrp   r  r  r   re  rV  r  r    Nrn   rd   r  r;  r]   r  r  TF)rv   r=   r   r  r  r  r)  r  r  r  r$  ru  r;   MoveIsosurface	MoveSlicerM  r7   r-  r9   rJ   r   
r[   r   r  ru  r  r   ry  r   r]   r,   s
             r_   r  zNvizToolWindow.OnVolumeMoveUp4  s   txx1&9&ABOOQUVVDD""488H#5dSj#AB!7""488H#5e#<=FFH''k'B  *84(^D! &&(37+

37#'"C!G9%%cAgtL/A#/FG\"37+MM((S$7M  q$w-*<=WcAg&MM##BT2 	!!$'??))+NN""5)

r`   c                 D   | j                  | j                  d   d   d         j                         dk(  rd}nd}| j                  | j                  d   |dz            }|j                         }||j                         dz
  k\  ry	| j                  | j                  d   d
         j	                         }| j                  |d      }| j                  d      d   }|d   d   }|j                         }	|j                  |	|dz          |j                  |dz          |j                  |dz          |j                  |       |dk(  rB|d   j                  |dz   |d   |          |d   |= | j                  j                  ||d       nA|d   j                  |dz   |d   |          |d   |= | j                  j                  ||d       | j!                  |       | j"                  j%                         r| j&                  j)                  d       |j+                          y	)z&Move isosurface/slice down in the listrp   r  r  r   re  rV  r  r    Nrn   rd   r  r;  r]   r   r  r  F)rv   r=   r   r)  r  r  r  r)  r  r  r  r$  ru  r;   r  r  rM  r7   r-  r9   rJ   r   r  s
             r_   r  zNvizToolWindow.OnVolumeMoveDown]  s   txx1&9&ABOOQUVVDD""488H#5dSj#AB!$--/A%%""488H#5e#<=FFH''k'B  *84(^D! &&(37+

37#'"C9%%cAgtL/A#/FG\"3'MM((S%8M  q$w-*<=Wc"MM##BU3 	!!$'??))+NN""5)

r`   c                 l    d| j                   j                  d<   | j                   j                  d       y)zVolume position changedFr1   Nr  r   s     r_   r  z&NvizToolWindow.OnVolumePositionChanged  r  r`   c                 f   | j                  | j                  d   |j                               }|sy| j                  | j                  d   d   d         j	                         }| j                  |j                               j                         }| j                  | j                  d   |   d         }| j                  ||       t        j                  | j                  d   d         D ]O  }|| j                  d   d   d   | j                  d   d   d   fv r0| j                  |      j                  |       Q | j                  d      }|d   d   d	   }| j                  j                  |      \  }	}
}|d
k(  r|}	n
|dk(  r|}
n|}|	|d   d   d<   |
|d   d   d<   ||d   d   d<   d|d   d   d<   t        |      }t        j                  | j                   |       d| j                   j"                  d<   | j$                  j'                         r| j                   j)                  d       yy)zVolume positionrp   Nr|   r  r   r  r   r;  r]   r   r    r  r  r  r  r8  Tr1   F)r@  r=   r   rv   r   r  rJ  r1  rA  rw   r  r;   GetVolumePositionr   rL   r   r9   rI   r7   r-  rJ   r  s               r_   r  zNvizToolWindow.OnVolumePosition  s.   &&txx'95;;=I""HHXz*62

,. 	 ##EKKM2;;=$$TXXh%7%@%JKfE:>>$((8"4Z"@A 	9C":.v6":.w7  ##C(11%8	9   *(^H%d+--11"51a19AQYAA*+Xz"3'*+Xz"3'*+Xz"3'/3Xz"8, #-
T^^U+)-g&??))+NN""5) ,r`   c                 `   | j                  d      }|d   d   d   }| j                  | j                  d   d   d         j                         }| j                  | j                  d   d   d         }| j                  | j                  d   d   d         }| j                  j                         }| j                  j                         }|d   |d	   z
  }| j                  j                  |      \  }	}
}|d	k(  r;|j                  d
|z  d|z         |j                  |	       |j                  |	       y|dk(  r;|j                  d
|z  d|z         |j                  |
       |j                  |
       y|j                  d
|z  d|z         |j                  |       |j                  |       y)zVolume position, axis changedrp   r;  r]   r|   r  r   r,   r    r   r  r2   N)
r  rv   r=   r   r;   r  r  r  r  rw   r  s               r_   r  zNvizToolWindow.OnVolumeAxis  s     *(^H%d+""HHXz*62

,. 	 $$TXXh%7
%CH%MN""488H#5j#A&#IJ((*}}&&(Awa --11"51a19OOBJE	2OOAMM!QYOOBJE	2OOAMM!OOBIq4x0OOAMM!r`   c                 H    | j                  |       | j                  d       y)z#Volume position changed by textctrlN)r  r  r   s     r_   r  z#NvizToolWindow.OnVolumePositionText  s    e$$$T*r`   c                 z   t        j                  | j                  d   d         D ]t  }|| j                  d   d   d   k(  r!| j                  |      j	                  d       <|| j                  d   d   d   k(  rU| j                  |      j                  d       v | j                  d      }d|d   d   d<   d|d   d   d<   d|d   d   d	<   d
|d   d   d<   t        |      }t        j                  | j                  |       | j                  j                         r| j                  j                  d       y
y
)zReset position of volumerp   r|   r  r   r   r   r  r  r  Nr  r8  Fr  r  s       r_   r  z$NvizToolWindow.OnResetVolumePosition  s4   >>$((8"4Z"@A 	5Cdhhx(4V<<##C(55a8*:6w??##C(11!4	5   **+Xz"3'*+Xz"3'*+Xz"3'/3Xz"8,"-
T^^U+??))+NN""5) ,r`   c                    | j                          | j                  d      }| j                  | j                  d   d         }|j	                         }|dk  ry| j                  | j                  d   d   d         j	                         }||d   d   |   d   d<   d|d   d   |   d   d	<   d
|   }|j                  |t        d      d|       |j                  |       t        |      }t        j                  | j                  |       | j                  j                         r| j                  j                  d       yy)zSlice axis changedrp   r|  r   NrV  rW  r|   r  r  r  Slice parallel tor  r8  F)UpdateSliceLabelsr  rv   r=   r   r  r@   r  r   rL   r   r9   r7   r-  rJ   )r[   r   r   ru  r  r  s         r_   re  z NvizToolWindow.OnVolumeSliceAxes  s-      *""488H#5h#?@!7""488H#5g#>v#FGTTV;?Xw$Z08=AXw$Z0:t$sq)<'=tDE

3 #-
T^^U+??))+NN""5) ,r`   c                 "   | j                  d      }| j                  | j                  d   d         }|j                         }|dk  ry| j                  | j                  d   d   d         j	                         }| j                  |d      |d   d   |   d   d	<   d|d   d   |   d   d
<   t        |      }t        j                  | j                  |       | j                  j                         r| j                  j                  d       yy)zSlice transparency changedrp   r|  r   NrV  r  Fr6  rK  r  r8  )r  rv   r=   r   r  r4  r   rL   r   r9   r7   r-  rJ   )r[   r   r   ru  r  vals         r_   rk  z"NvizToolWindow.OnSliceTransparency  s     *""488H#5h#?@!7!!$((8"4W"=h"GHQQS:>:J:J5 ;K ;
Xw$X.w7 <@Xw$X.x8 #-
T^^U+??))+NN""5) ,r`   c                    | j                  d      }| j                  | j                  d   d         }|j                         }|dk  ryt	        dd      D ]  \  }}||d   d   |   d   |<    d|d   d   |   d   d	<   | j                  |d   d   |          t        |
      }t        j                  | j                  |       | j                  j                         r| j                  j                  d       yy)zSlice position resetrp   r|  r   Nr[  r\  r`  ra  rb  rc  )r   r    r   r    r   r    r   rV  r|   r  r8  F)r  rv   r=   r   r  rl  r   rL   r   r9   r7   r-  rJ   )r[   r   r   ru  r  rn  r  s          r_   rl  zNvizToolWindow.OnSliceReset  s     *""488H#5h#?@!702G
 	BJE3 ?BDN7#C(4U;	B >BXw$Z0:""4>'#:3#?@"-
T^^U+??))+NN""5) ,r`   c                 `   | j                  d      }| j                  | j                  d   d         }|j                         }|dk  ry| j                  d   d   }|j	                         }|j                         dz  }dD ]1  }|d|z      |k(  s||d   d   |   d	   |<   d|d   d   |   d	   d
<    n d| j                  j                  d<   t        |      }t        j                  | j                  |       | j                  j                         r| j                  j                  d       yy)zSlice position is changingrp   r|  r   NrV  r	  r  r_  r|   r  Tr1   r8  F)r  rv   r=   r   r   r  r9   rI   r   rL   r   r7   r-  rJ   )	r[   r   r   ru  r  r=   r  rK  rn  s	            r_   rh  z$NvizToolWindow.OnSlicePositionChange4  s-     *""488H#5h#?@!7hhx )&9 	E9u$%.BGXw',Z8?EIXw',Z8B		
 *.g&"-
T^^U+??))+NN""5) ,r`   c                     d| j                   j                  d<   | j                  j                         r| j                   j	                  d       yy)zSlice position is changedFr1   Nr9   rI   r7   r-  rJ   r   s     r_   rj  z%NvizToolWindow.OnSlicePositionChangedL  =    ).g&??))+NN""5) ,r`   c                 
   | j                  | j                  d   d         j                         }	 t        |j	                         d         dz
  }| j                  dd       | j                  j                  |       |dk\  r| j                  j                  |g d	
       | j                  j                         r| j                  j                  d       | j                  |       y#  d}| j                  dd       Y xY w)zCutting plane selectedr	  r
  r:  r    Tr}  Fr   )r  r|   r  )changesN)rv   r=   r)  r  r  r  r9   SelectCPlaneUpdateCPlaner7   r-  rJ   UpdateCPlanePager[   r   plane
planeIndexs       r_   r  z NvizToolWindow.OnCPlaneSelectionR  s    ##DHHX$6x$@ATTV	5U[[]2./!3JOOHdO3 	##J/?NN''$G (  ??))+NN""5)j)	5JOOHeO4s   2C) )Dc                 
   | j                  | j                  d   d         j                         }	 t        |j	                         d         dz
  }|j                         t        | j                  d   d   d   j                               t        | j                  d   d   d   j                               z   v rd}nd}| j                  j                  |   |   }| j                  || j                  d   |   |       d	| j                  j                  d
<   t        |f|      }t        j                  | j                  |       | j                  j!                         r| j                  j#                  d       yy#  d}Y 2xY w)zCutting plane is changingr	  r
  r:  r    r  r  r  r|   Tr1   r  currentFN)rv   r=   r)  r  r  r   ru  r-  r9   cplanesrD  rI   r   rL   r   r7   r-  rJ   )r[   r   r  r  actionr   s         r_   r  zNvizToolWindow.OnCPlaneChanginge  sP   ##DHHX$6x$@ATTV	U[[]2./!3J ;;=(#J/6==?@488H%j1&9@@BCD
  FF~~%%j1&9eTXXh/7>)-g&viD
T^^U+??))+NN""5) ,#	Js   E; ;Fc                     d| j                   j                  d<   | j                  j                         r| j                   j	                  d       yy)zCutting plane change doneFr1   Nr  r   s     r_   r  z!NvizToolWindow.OnCPlaneChangeDone~  r  r`   c                 z   dD ]  }|j                         | j                  d   d   |   d   k(  s-| j                  |j                               j                         }| j                  | j                  d   d   |   d         }| j	                  ||        | j                  |       | j                  d       y)	z!Cutting plane changed by textctrlr  r  r  r	  r|   r,   r   r  r   N)r   r=   rv   r  rJ  r  r  )r[   r   r  rK  r   s        r_   r  z!NvizToolWindow.OnCPlaneChangeText  s    # 	CD{{} 2: >t DV LL++EKKM:CCE,,HHX&z248B &&fE&B	C 	E*%r`   c                    | j                  | j                  d   d         j                         }| j                  | j                  d   d         j                         }	 t	        |j                         d         dz
  }|| j                  j                  |   d<   t        d|      }t        j                  | j                  |       | j                  d       y#  d}Y axY w)	zCutting plane shading changedr	  r  r
  r:  r    )r  r  N)rv   r=   r   r)  r  r  r9   r  r   rL   r   r  )r[   r   r  r  r  s        r_   r  zNvizToolWindow.OnCPlaneShading  s    %%dhhx&8&CDQQS##DHHX$6x$@ATTV	U[[]2./!3J 9@z*95lJG
T^^U+%	Js    C C c                    | j                  | j                  d   d         j                         }	 t        |j	                         d         dz
  }t        j                  t        j                  dd            | j                  j                  |<   d| j                  j                  |   d<   t        d	|
      }t        j                  | j                  |       | j                  d       | j                  |       y#  d}Y xY w)zReset current cutting planer	  r
  r:  r    r   r   Ton)r|   r  r  r  N)rv   r=   r)  r  r  r   r   r	   r   r9   r  r   rL   r   r  r  r  s       r_   r  zNvizToolWindow.OnCPlaneReset  s    ##DHHX$6x$@ATTV	U[[]2./!3J .2]]6x8.
z* 48z*406

 	T^^U+%j)	Js   C= =Dc                    |j                         | j                  d   d   d   k(  rd}n*|j                         | j                  d   d   d   k(  rd}ny|j                         rO| j                  j	                          || j
                  j                  d<   | j
                  j                  d       yd| j
                  j                  d<   | j
                  j                  d       y)	z.Place an arrow/scalebar by clicking on displayr  r  r  r  Nr  r  r  )r   r=   r  r7   r  r9   r  r  )r[   r   r   s      r_   r  z$NvizToolWindow.OnDecorationPlacement  s    ;;=DHH\27;GDDD[[]dhh|4Z@IID<<>OO!!#*.DNN  'NN))'2*3DNN  'NN)))4r`   c                 
   | j                   j                          d| j                  j                  d   d<   | j	                  | j
                  d   d   d         j                          | j                  j                  d       y)zDelete arrowFr  r8  r  r%  N)r;   DeleteArrowr9   r  rv   r=   r  rJ   r   s     r_   r  zNvizToolWindow.OnArrowDelete  sg    !!#5:!!'*62DHH\27;HEFNNPu%r`   c                    | j                  | j                  d   d   d         }|j                         }|j                  |      }|t        j
                  k(  ry| j                  j                  |       | j                  | j                  d   d   d         j                  |       |j                         s"|j                  |j                         dz
         | j                          | j                  j                  d       y)zDelete scalebarr  r  r   N)r]   r    F)rv   r=   r   GetClientDatarL   r(  r;   DeleteScalebarr$  r+  r  r)  r  r9   rJ   )r[   r   r   choiceIndexr  s        r_   r  zNvizToolWindow.OnScalebarDelete  s    $$TXXl%;J%G%QR))+$$[1BLL $$$.DHH\2:>xHIPP	
 ~~ 1A 56$$&u%r`   c                     | j                  | j                  d   d   d         }|j                  t        d      |dz   z  |       |j	                  |j                         dz
         | j                          y )Nr  r  r   zScalebar %dr    )rv   r=   r  r@   r  r)  r  )r[   scalebarNumr   s      r_   AddScalebarzNvizToolWindow.AddScalebar  sg    $$TXXl%;J%G%QRa&+/:KHFOO-12$$&r`   c                 h    | j                  | j                  d   d   d         j                          y )Nr  r  r%  )rv   r=   r  )r[   s    r_   AddArrowzNvizToolWindow.AddArrow  s,    DHH\27;HEFMMOr`   c                 T   | j                  | j                  d   d   d         }| j                  | j                  d   d   d         j                  |j                                 | j                  | j                  d   d   d         j                  |j                                 y )Nr  r  r   r%  )rv   r=   r  r+  )r[   r   s     r_   r  z&NvizToolWindow.DisableScalebarControls  s    $$TXXl%;J%G%QRDHH\2:>xHIPP  	
 	DHH\2:>xHIPP  	
r`   c           	         |j                         | j                  d   d   j                         v rd}n4|j                         | j                  d   d   j                         v rd}ny| j                  | j                  d   |   d         j	                         }| j                  | j                  d   |   d         j	                         }|dk(  rH| j                  |      | j                  j                  |   d<   || j                  j                  |   d<   nU|dk(  rP| j                  j                  d   r7| j                  j                  |   D ]  }| j                  |      |d<   ||d<    |dk(  r| j                  j                  d   d   r| j                  j                  | j                  j                  d   d   d	   | j                  j                  d   d   d
   | j                  j                  d   d   | j                  j                  d   d          | j                  j                          y|dk(  r| j                  j                  d   rg }| j                  | j                  d   d   d         }t        |j                               D ]"  }|j                  |j                  |             $ | j                  j                  |   D ]>  }|d   |v s| j                  j                  |d   |d   d	   |d   d
   |d   |d          @ | j                  j!                          | j                  j#                  d       yyy)zSet arrow/scalebar propertiesr  r  r  Nr   r   r8  r|   r  r  r   r]   F)r   r=   r-  rv   r  r9  r9   r  r;   SetArrow	DrawArrowr   r)  rv  r  SetScalebarDrawScalebarrJ   )	r[   r   r   r   r   r  r<  r   r  s	            r_   r  zNvizToolWindow.OnDecorationProp  s   ;;=DHH\27;BBDDD[[]dhh|4Z@GGIID##DHH\$:4$@$IJSSU""488L#9$#?#GHQQS7?7;7K7KE7RDNN%%d+G46:DNN%%d+F3ZDNN$=$=j$I NN55d; ($($8$8$?!#' ( 7?t~~88A&IMM""))'2:>sC))'2:>sC))'26:))'27;	 MM##%ZDNN$=$=j$IC((,)?
)KH)UVFv01 8

6//678 NN55d; D>S(MM--  ,S1 ,S1 ( ) MM&&(NN""5) %Jr`   c                 :   d| _         t        j                  dd|       |dk(  r| j                  d       t	        | j
                  j                  d   d         }t	        | j
                  j                  d   d         }t	        | j
                  j                  d   d         }t	        | j
                  j                  d	   d         }| j
                  j                  d	   d   }| j
                  j                  d	   d   }d
D ]  }	 | j                  | j                  d   d   |         j                  ||       | j                  | j                  d   d	   |         j                  ||       | j                  | j                  d   d   |         j                  |       | j                  | j                  d   d	   |         j                  |        | j                  | j                  d   d   d         j                  | j
                  j                  d   d          | j
                  j                  d   d   }	| j
                  j                  d   d   }
d
D ]h  }| j                  | j                  d   d   |         j                  |	       | j                  | j                  d   d   |         j                  |
       j n|dv r| j                  | j                  |   d         j                         }| j                  |      }|rT|dk(  r-| j!                  |d      }|r9| j#                  ||d          n"|dk(  r-| j!                  |d      }|r| j%                  ||d          n|dk(  r| j!                  |d      }|r| j'                  ||d          n|dk(  rf| j
                  j(                  d   d   }| j
                  j(                  d   }| j
                  j(                  d   }d
D ]  }| j                  | j                  d   d   |         j                  |       | j                  | j                  d   d   |         j                  |       | j                  | j                  d   d   |         j                  |        | j                  | j                  d   d         j                  | j
                  j(                  d          | j                  | j                  d   d         j+                          nQ|dk(  ra| j                  | j                  d   d         }|j                  | j                  | j                  d   d         j                                n|d k(  r| j                  | j                  d    d!   d"         }|j                  | j
                  j,                  d!   d"          | j                  | j                  d    d#   d"         }|j                  | j
                  j/                                nH|d$k(  r| j
                  j0                  r,| j                  | j                  d$   d         }| j
                  j0                  D ]1  }|j3                  t5        d%      t7        |d$   d&   d'         z          3 |j9                  d       | j;                  d(       | j=                  d$d       n|d)k(  rp| j>                  jA                         }t5        d*      g}tC        |      D ]$  }|jE                  d+t5        d,      |dz   fz         & | j                  | j                  d)   d-         jG                  |       d}tI        | j
                  jJ                        D ]  \  }}|d.   s|dz   } | j                  | j                  d)   d-         j9                  |       | j>                  jM                         | j>                  jO                         }}|dkD  r|| j                  | j                  d)   d   d/   d0         j                  | d1z  |d1z         | j                  | j                  d)   d   d2   d0         j                  | d1z  |d1z         |d   |d   z
  dkD  r=| j                  | j                  d)   d   d   d0         j                  |d   |d          | j                  | j                  d)   d   d   d0         j                  |d          | j                  | j                  d)   d   d   d3         j                  |d          | jQ                  d(       n|d4k(  r| jS                          | jU                          d5| _         y(# t        $ r dx}| j
                  j                  d   d<   dx}| j
                  j                  d   d<   dx}| j
                  j                  d   d<   | j                  | j                  d   d   |         j                  ||       Y w xY w)6zUpdate dialog (selected page)Tr    zNvizToolWindow.UpdatePage(): %sr3   r   r?  r@  rK  r   r   r,   r   r  i  r   r   r   r   rm   rc   rp   rn   rm   rb   r  rc   rp   rd   r~   r|   r  r  r  ro   r  r  r   r  r  r  r;  r   Nr	  Nonez%s %iPlaner
  r  r  r   g       @r  r,   r(  F)+rG   r   r4   rY   r  r9   r}   r3   rv   r=   r  OverflowErrorrw   rg  r  r  r  r  r  r  r~   r   r  _getDecorationSizer0  r  r@   r  r  r0  r  r;   GetCPlanesCountr   rv  SetItemsrf  r  
GetXYRanger  r  UpdateAnimationPagerW   )r[   pageIdhminhmaxhvalzminzmaxzvalr  tvalpvalr   r   ry  bvalavalr=   rm   r  r  rO  r  r  rm  r	  xyRangezRanges                              r_   r   zNvizToolWindow.UpdatePage  sW	    		!6?VLL t~~++H5e<=Dt~~++H5e<=Dt~~++H5g>?Dt~~**84U;<D>>&&x07D>>&&x09D- X
''(8(B7(KLUUd ##DHHV$4X$>w$GHQQ$ ##DHHV$4X$>w$GHQQRVW##DHHV$4X$>w$GHQQRVW#X&  0 >w GHRR##L1': >>&&w/8D>>&&w/8D- W##DHHV$4W$=g$FGPPQUV##DHHV$4W$=g$FGPPQUVW
 66&&txx'7'>?HHJD$$V,DY& 33D(3KE..ud9oFx' 33D(3KE--eT(^Dx' 33D+3NE--eT(^Dw>>''
3C8D>>''1D>>''	2D- ##DHHW$5c$:7$CDMMdS##DHHW$5h$?$HIRRSWX##DHHW$5i$@$IJSS  1' :;EE$$W-  1* =>GGIx%%dhhx&8&?@CLL,,TXXi-@-GHQQST|#%%dhh|&<W&Ef&MNCLL227;FCD%%dhh|&<Z&H&PQCLL::<=z!~~''--dhhz.B9.MN NN44 DNN+T*-=h-G-O)PP $$Q'((.
D1xMM113E&	G u Bw!G*eai)@@AB 28 <=FFwOG&t~~'='=> $	6$<!eG$  28 <=JJ7S"mm668$--:Q:Q:SVG{##HHX&z237A(G8c>7S=9##HHX&z237A(G8c>7S=9ay6!9$q(##HHX&z237A(6!9fQi0 2: >s CH MNWWq	  2: >s CF KLUUq	 ""4({"$$&!_ % CDDD4>>//9%@CHHD4>>//9%@EIID4>>//9'B''(8(B7(KLUUd	s   4e??Bhhc                    | j                  | j                  d   d         }|j                         j                         d   }|j	                  |dz
         | j
                  j                         }|j                         r0| j                  | j                  d   d         j                          n| j                  d       | j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d         j                          | j                  | j                  d   d	         j                          | j                  | j                  d   d
   d         j                          | j                  | j                  d   d
   d         j                          y)zUpdate animation pager)  r*  r   r  r/  r  r,  r1  r3  r5  r   r,   N)rv   r=   r   GetSizeWrapr9   rQ   r  r  r  r  r  )r[   r*  r9  r)  s       r_   r  z"NvizToolWindow.UpdateAnimationPage  s    ""488F#3F#;<##%--/2		%"*~~**,;;= 0 89@@B!!!*DHHV,V45==?DHHV,X67>>@DHHV,W56>>@DHHV,V45==?DHHV,\:8DEMMODHHV,\:6BCKKMr`   c                    |dk(  ry| j                   j                  |   }dD ]  }dD ]>  }| j                  | j                  d   d   |   |         j	                  |d   |          @ dD ]>  }| j                  | j                  d   d   |   |         j	                  |d   |          @  | j                  | j                  d   d	         j                  |d	          y)
z/Update widgets according to selected clip planer:  N)r,   r   r  r	  r|   )r  r  r  r  )r9   r  rv   r=   rw   r  )r[   r  r   widgetrW  eachs         r_   r  zNvizToolWindow.UpdateCPlanePage  s    B;~~%%e,( 	3F' 3##HHX&z248@(4
+D123 ( 3##HHX&z248@(4
+D123	3 	DHHX.y9:GGYXr`   c           	         t        j                  |j                        d   }|r:| j                  | j                  d   d         j                  |j                         | j                  | j                  d   d         j                  |       |rT|j                  dk(  rEd| _        | j                  | j                  d   d   d         j                  |j                         n3| j                  | j                  d   d   d         j                  d       | j                  ddd	       d|d
   v r|d
   d   d   }|d
   d   d   r4| j                  | j                  d   d   d         j                  |       n[t        t        t        |j                  d                  }| j                  | j                  d   d   d         j                  |       | j                  dd|d
   d   d   	       | j                  dd|d
   d   d   	       |d
   d   d   }|d
   d   d   r4| j                  | j                  d   d   d         j                  |       nB| j                  | j                  d   d   d         j                  | j                  |             d|d
   v r|d
   d   d   }|d
   d   d   r4| j                  | j                  d   d   d         j                  |       nB| j                  | j                  d   d   d         j                  | j                  |             | j                  dd|d
   d   d   	       n| j                  ddd	       t!        j"                  |d         D ]  \  }}|dk(  r|dk(  rm| j                  | j                  d   d   d         j                  |d          | j                  | j                  d   d   d         j                  |d          |dk(  r|d   d   dk(  r4| j                  | j                  d   d   d         j%                  d       nr|d   d   dk(  r4| j                  | j                  d   d   d         j%                  d       n3| j                  | j                  d   d   d         j%                  d       |d   d   dk(  r4| j                  | j                  d   d   d         j%                  d       n3| j                  | j                  d   d   d         j%                  d       |d   d   dk(  r4| j                  | j                  d   d   d         j%                  d       n3| j                  | j                  d   d   d         j%                  d       |d   }| j                  | j                  d   d   |         }	|	j'                         }
|
d k(  r|	j%                  |       m|
d!k(  r;t        t        t        |j                  d                  }|	j                  |       |	j                  |        | j)                  d       | j+                  d"       y)#zUpdate surface pagetitlerm   rn   r  rb   Tr   r'  r  r  rK  r  r  r  r  Nr  r  r&  r  r  r  r  r  r   r    r   r(   r  r  r  rz   r   r  )grassraster_infor   rv   r=   rw   r  r   rH   r  ru  rn   r  r  rg  r4  r1  r2  r  ru   r  r  )r[   ry  r   r  r  rK  r   r  drawDatar=   r   s              r_   r  z NvizToolWindow.UpdateSurfacePage  sL     ,W5 3E :;DDUZZPDHHY/78AA$G UZZ8+"&D 3G <U CDMM

  3G <U CDMMbQiwDId;''%g.w7EK )%0##DHHY$7$@$GHQQRWXSekk#&678##DHHY$7$@$IJTT   "'tK7H7QRW7X !  	g43DW3Me3T 	 	
 [!'*73W%e, 3G <U CDMMeT 3G <W EFOO  ' tK((%h/8EK *51##DHHY$7$@$GHQQRWX##DHHY$7$A'$JKTT$$U+   "%h/6 !    )8 N "%tF|!< 9	$GX%,&##DHHY$7$?$MNWWX& ##DHHY$7$?
$KLUUV$ & F#F+x7''+F3F;"l1of%f-7''+F3F;"l1o''+F3F;"l1oF#G,6''+F3G<"l1o''+F3G<"l1oF#I.&8''+F3I>"l1o''+F3I>"l1oW%E%%dhhy&9&&A'&JKC;;=D{"  '!Sekk#&678e$U#s9	$z 	4  	&r`   c           
         t        j                  |j                               }|sy|d   rt        d      }d}nt        d      }d}|dt        d      |d	   |d
   dz  z   z  }|r:| j	                  | j
                  d   d         j                  |j                         | j	                  | j
                  d   d         j                  |       | j	                  | j
                  d   d   d         j                  |       dD ]  }| j	                  | j
                  d   |   d         j                  |       | j	                  | j
                  d   |   d   d         j                  |       | j	                  | j
                  d   |   d   d         j                  |       ||   d   d   rA| j	                  | j
                  d   |   d   d         }|j                  ||   d   d          d||   d   v rM||   d   d   rB| j	                  | j
                  d   |   d   d         }|j                  ||   d   d          nVd||   d   v rL||   d   d   rA| j	                  | j
                  d   |   d   d         }|j                  ||   d   d          | j                  d        | j	                  | j
                  d   d   d         }	d|d   v r|	j                  d       n|	j                  d       |d   |d   z   d kD  r|	j                  d       n|	j                  d       | j                  d|	j                                | j	                  | j
                  d   d   d!         }
|
j                  |d   d!   d"          | j	                  | j
                  d   d   d#         }|j                  t        t        t        |d   d#   d"   j!                  d$                         dD ]L  }|dk(  r| j	                  | j
                  d   d   d         }|d   rt        d%      t        d&      g}nt        d'      g}|j#                  |       ||   d(   d)   dk(  r|j%                  d*       n|j%                  d        ||   d(   d)   dk(  s| j&                  j)                  d+      }| j&                  j)                  d,      }||z   }| j	                  | j
                  d   |   d         }|j#                  |       t+        |      D ])  \  }}	 ||   d(   d   d   |   }|j3                  ||       + O d-D ]C  }| j	                  | j
                  d   d   d   |         }|j                  |d   d   d"          E | j	                  | j
                  d   d
   d         }d|d
   v r|j                  d       n|j                  d       |d
   |d.   z   d kD  r|j                  d       n|j                  d       | j                  d
|j                                d/D ]  }| j	                  | j
                  d   d
   |         }|j                         }|d0k(  r|j%                  |d
   |   d"          W|d#k(  rCt        t        t        |d
   |   d"   j!                  d$                  }|j                  |       |j                  |d
   |   d"           | j	                  | j
                  d   d
   d         }|d   rt        d%      t        d&      g}nt        d'      g}|j#                  |       |d
   d(   j5                  dd      r|j%                  d*       n|j%                  d        d-D ]C  }| j	                  | j
                  d   d
   d   |         }|j                  |d
   d   d"          E y# t,        t.        t0        f$ r d}Y w xY w)1zUpdate vector pageNmap3dzVector map is 3DFzVector map is 2DTz - z)%(features)d features (%(points)d points)
primitivesrD  )featuresrD  rc   rn   r  r7  rB  )r7  rD  rm   r   r   r,   r:  usecolorr;  usesizerN  usewidthr<  r8  r;  
boundariesr   r9  rK  r   r  r@  rA  z
on surfacer  r   r    rb   r  r  	centroids)r   rK  r   rz   )r  vector_info_toporu   r@   rv   r=   rw   r   r  r  rV  r  r=  ru  rn   r  r  r  r  r9   r  rf  r  
IndexErrorr  r  get)r[   ry  r   r  vInfor  enabler,  r6  rj  r9  r   r$  r\   r  r'  r0  r3  
surfaceWinidxrm   selectedr   r=   rn  propr   s                              r_   r  zNvizToolWindow.UpdateVectorPageB  s   &&u}}7>'(DF'(DFEFl+HoJ
 
 
 	

  25 9:CCEJJODHHX.v67@@FDHHX.w7=>EEfM$ 	'A 21 5i @AHHP 21 5h ? IJQQ  21 5h ? GHOOPVWAwz":.++HHX&q)*5lC tAwz2:>?DGJ//DGJ4G	4R++HHX&q)*5kB tAwz29=>tAwz22tAwz7J:7V++HHX&q)*5lC tAwz2:>?  &-	'4 ''(:7(CF(KL	tG}$t$u%'NU<00A5T"U#gy':':'<=##DHHX$6w$?$HItG}W-g67##DHHX$6w$?$HItCT']7%;G%D%J%J3%OPQR( 	4E--dhhx.@.I$.OP>/0!G*=E|_-E  ';v&v.$6((+((+E{6"6*i7..66x@ NN88D	"Y.!00(1CE1J91UV
##H-$-h$7 4LC)#';v#6y#A&#I##N $$S(34%	42 ' 	;D%%dhhx&8&A(&KD&QRCLLgx09:	; ((();H)Ef)MN
tH~%%&(OeK00A5d#e$h
(<(<(>?/ 		<D%%dhhx&8&B4&HIC;;=D{"  h!5g!>?Sd8nT&:7&C&I&I#&NOPU#T(^D1':;		< !!$((8"4X">t"DE>'(!G*5E|_%EU>&!%%dE2QQ ' 	<D%%dhhx&8&B8&LT&RSCLLh1':;	<_ &z8< )#()s    __'&_'c                    |r:| j                  | j                  d   d         j                  |j                         t	        j
                  |d         D ]  \  }}|dk(  r| j                  | j                  d   d   |         }|dk(  r|d   d   d   }|dk(  r|d   d   |d   d   d      d   d	k(  rd
}nd}|dk(  r||d   d   d      d   }|dk(  r|d   }|j                         dk(  r|j                         |j                          | j                  d       |d   d   }|d   d   d   dk(  rQ| j                  j                  ||d   d   d   d          | j                  j                  ||d   d   d   d          nP| j                  j                  ||d   d   d   d          | j                  j                  ||d   d   d   d          | j                  | j                  d   d         }	|d   d   d   dk(  rg }
|d   D ])  }|d   d   }|
j                  t        d      d|       + |	j!                  |
       t#        t%        |
            D ]  }|	j'                  |        |d   r)|	j                  d
       | j)                  |d   d
          n| j)                  |d          ng }|d   D ],  }d|d   d      }|j                  t        d      d|       . |	j!                  |       t#        t%        |            D ]  }|	j'                  |        |d   r)|	j                  d
       | j+                  |d   d
          n| j+                  d       d|d   v ru|d   d   }| j                  | j                  d   d   d         j                  d       d D ]5  }| j                  | j                  d   d   |         j                  |       7 | j-                  |j                  !      }| j                  | j                  d   d         }|j/                  d"t        d#      |d
   |d   fz         y)$zUpdate volume pagerp   rn   r  r  r  rK  r  r  r  r   r    r&  r!  r~  rz   Nr;  r]   r  rV  r  rM  r  r  r  r  r|   r  r  r  r   r  rp  z%s %.2f - %.2fzrange:)rv   r=   rw   r   r1  r2  ru   r  r  r;   rX  r]  rY  r^  rv  r@   Setr   r%  r  rk  rl  r  r  )r[   ry  r   r  r  idatar=   rK  r]   r!  r{  isorq  rm  r|  rV  r  r  mapRanger  s                       r_   r  zNvizToolWindow.UpdateVolumePage  s    25 9:CCEJJO "mmDL9 	$NGU%%%dhhx&8&@&IJC& VV,W5)#L+DL,@,HI&Q EE,&d6l626:;GD%i({{}+  'U#/	$2 	$(^D!<'<7MM++DL+L9'B MM**DL.|<WE MM&&r4<	+B7+KG+TUMM%%b$v,|*DW*Mg*VW!!$((8"4Z"@A<'<7KL) BFG,""aj%#@AB GGK 3{+, 		!L!  #,,T,-?-BC,,T+->?Fg H&uZ'8'@A+>)?FGH GGFO3v;' 		!G}  #**4=+;<**40 $z""
#C(D 2: >v FGTTUVW- ##DHHX$6z$B7$KLUU
 ###4""488H#5f#=>&!H+x{HQK)PPQr`   c           	         dD ]  }||vr| j                  d|d       ||   d   }|dk(  r||   d   r5| j                  | j                  d   |   d         j                  |       nt	        t        t        |j                  d                  }| j                  | j                  d   |   d	         j                  |       n||   d   r=d
| _	        | j                  | j                  d   |   d         }|j                  |       nf|rd| j                  | j                  d   |   d	         }|dk(  r|j                  t        |             n |j                  | j                  |             | j                  d|||   d           d|v r7| j                  | j                  d   d         j                  |d   d          yy)z&Update dialog -- isosurface attributes)rM  r   r  r  r  rp   Nr  rK  r   rn   r  r  TrM  rL  )r  rv   r=   rw   ru  rn   r  r  rg  rH   r  r4  )r[   r   r  rK  r   r=   s         r_   rk  z&NvizToolWindow.UpdateVolumeIsosurfPage!  s   
 B 	YED $$he$NK(E;u%''(:5(A%(HIRR !S%++c*:!;<E''(:5(A'(JKUU ;u%*.D'--dhhx.@.G.NOCLL'"11$((82DU2KG2TU F?LLu6LL)9)9%)@A  (%T%[QVEW X=	Y@ d? 27 ;<EEWg& r`   c                 .   |r0dD ]S  }| j                  | j                  d   d   d|z            }|j                          |j                  |d   |   dz         U | j                  | j                  d   d   d         }|j	                  |d   d          |j                          | j                  | j                  d   d   d	         }|j                  | j                  |d	   d
                |j                          | j                  | j                  d   d   d         j                          ndD ]7  }| j                  | j                  d   d   d|z            j                          9 | j                  | j                  d   d   d         j                          | j                  | j                  d   d   d	         j                          | j                  | j                  d   d   d         j                          | j                          y)z!Update dialog -- slice attributesr  rp   rV  r_  r|   r   rW  r  r  rK  r   N)rv   r=   r  rw   r  r4  r  r  )r[   r   rn  r=   s       r_   rl  z$NvizToolWindow.UpdateVolumeSlicePageK  s   = <))HHX&w/	E0AB 

T*-e4s:;< %%dhhx&8&A&&IJCT*-f56JJL%%dhhx&8&A(&KLCLL))$x.*ABCJJL 27 ;G DELLN= ##HHX&w/	E0AB')  27 ;F CDLLN 27 ;H EFNNP 27 ;G DEMMO r`   c                 >   | j                  | j                  d   d   d         j                         }|dk(  r | j                  d      j	                  t        d             | j                  d      j	                  t        d             | j                  d	      j	                  t        d
             | j                  d      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             y|dk(  r | j                  d      j	                  t        d
             | j                  d      j	                  t        d             | j                  d	      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             y| j                  d      j	                  t        d
             | j                  d      j	                  t        d             | j                  d	      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             | j                  d      j	                  t        d             y)z6Update text labels of slice controls according to axisrp   rV  rW  r   label_edge_0zNorth edge:label_edge_1zSouth edge:label_edge_2z
West edge:label_edge_3z
East edge:label_coord_0zNorthing (Y):label_coord_1zHeight (Z):rZ  zEasting (X):r    zBottom edge:z	Top edge:N)rv   r=   r   rP  r  r@   )r[   r  s     r_   r  z NvizToolWindow.UpdateSliceLabelsg  s   !!$((8"4W"=f"EFSSU!8!!.1::1];KL!!.1::1];KL!!.1::1\?K!!.1::1\?K!!/2;;Ao<NO!!/2;;Am<LM!!/2;;An<MNAX!!.1::1\?K!!.1::1\?K!!.1::1];KL!!.1::1];KL!!/2;;An<MN!!/2;;Am<LM!!/2;;Ao<NO!!.1::1\?K!!.1::1\?K!!.1::1^;LM!!.1::1[>J!!/2;;An<MN!!/2;;Ao<NO!!/2;;Am<LMr`   c                    |dk(  r| j                  d       n'|dv r| j                  d       n| j                  d       | j                  | j                  |   d         }	 |j                  |j	                  | j                  |   d                | j                  |j	                  | j                  |   d         j                         f       y# t        $ r$ |j                  | j                  |   d          Y yw xY w)	zGet named pager3   r   r  r    r   r   r]   N)r  rv   r+   ExpandGetFoldPanelr   r   r  )r[   r   r=   s      r_   rY   zNvizToolWindow.SetPage  s    6>a 44a a !!$))D/*"=>	4JJs''		$(=>?  !!$))D/$"78GGIK  	4TYYt_T23	4s   !A/C *C>=C>F)TTT)N)NNNTrO  FTrF  )r  )__name__
__module____qualname____doc__rL   r   r   FNPageStyleFNFNB_NO_X_BUTTONr<   rZ   r   r   rN   r   r   rP   r   r   r?   rD   rA   rB   rC   r  r  r  r  r  r  r  r  r  r  r  r  rV  rW  rX  rY  rT  rU  r[  r  r  rT   rV   ra  r1  r2  r0  r3  r  rD  rJ  r  r  r  r  r@  rE   r  r  r  r  r  r  r  r  rQ  r  r  r	  r
  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r9  r3  r  r4  r  r  r  r  r  r  rT  rX  rU  rh  r]  r^  r_  r\  rf  rV  r:  rW  rM  r  r  r  rS  r  r[  rR  rS  r  r  r  r  r  r  r  r  r  r  r  re  rk  rl  rh  rj  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  rk  rl  r  rY   rp  r`   r_   r%   r%   U   sq   $ 99##b&8&88;*zS.? B,
,
+iVwrF"P:$x&2B
sj[zobN`tl_BEN	NBMN$?.?
=
$ DH'0K&0@G<%(*4P"*0&&	B
~@mj 6*p7:
%>*
 **
(>
==(T90&*.0&d?*B>(V>EG.R*,$"*#*JI8	*:,*^&
,
:)V2(*T88&'*2*>;*z
  @":5	**.1**D)*V#-JM^-^'R'R&
,*\8+
*,*.*,*.*0**&*2*
&& *&5"&&$'P
**XB"HN*Y |'|G<RTRl(T!8N>4r`   r%   c                   N    e Zd ZdZej
                  fdZd	dZd Zd Z	d Z
d Zy)
PositionWindowz_Abstract position control window, see subclasses
    ViewPositionWindow and LightPositionWindowc                 t   || _         d| _        t        j                  | ||fi | | j	                  d       t               | _        | j                  j                  t        j                  dt        j                               | j                  j                  t        j                  ddt        j                               | j                  t        j                  d        | j                  t        j                  | j                          | j                  t        j"                  | j$                         y )NTWHITEz
dark green)r   r(   r   )r   r9  r(   c                      y rF  rp  )r  s    r_   <lambda>z)PositionWindow.__init__.<locals>.<lambda>  s    r`   )r9   r1   r   r<   SetBackgroundColourr   pdcSetBrushrL   BrushSOLIDSetPenPenrK   EVT_ERASE_BACKGROUND	EVT_PAINTOnPaintEVT_MOUSE_EVENTSOnMouser[   r5   r   r]   r^   s        r_   r<   zPositionWindow.__init__  s    "
fb3F3  ):"((,bhhGHl!288LM		"))>:		",,-		"%%t||4r`   c                    | j                         \  }}|\  }}|r
||z  }||z  }| j                  j                          | j                  j                          | j                  j	                  |dz  |dz  t        |      t        |             | j                  j                  t        |      t        |      d       | j                  j                          y )Nr   r'   )GetClientSizer  r  BeginDrawingDrawLiner  
DrawCircle
EndDrawing)r[   r   r  rC  hr  r  s          r_   r  zPositionWindow.Draw  s    !!#11AAAA!q&!q&#a&#a&9CFCFA.r`   c                     t        j                  |       }|j                  t        j                  d             |j	                          | j
                  j                  |       y )NWhite)rL   BufferedPaintDCSetBackgroundr  r  r  DrawToDC)r[   r   dcs      r_   r  zPositionWindow.OnPaint  sF    %
'*+

 	"r`   c                     |dk  rd}n|dkD  rd}|dk  rd}n|dkD  rd}| j                  ||      \  }}|| j                  d   d<   || j                  d   d<   ||fS )z(Update position coordinates (origin: UL)r  r  r|   r  r  )TransformCoordinatesr   )r[   xcoordycoordr  r  s        r_   r  zPositionWindow.UpdatePos  sx    C<Fc\FC<Fc\F((81%&		*c"%&		*c"v~r`   c                 6   |j                         ry|j                         \  }}| j                  ||f       | j                         \  }}t	        |      |z  }t	        |      |z  }| j                  ||       | j                  d       |j                          y )Nr   F)
LeftIsDownGetPositionr  r  r  r  rJ   r   )r[   r   r  r  rC  r#  s         r_   r  zPositionWindow.OnMouse  s    $$&DAqII1a&I!%%'DAqa1Aa1ANN1a LL

r`   c                     | j                  | j                  d   d   | j                  d   d         \  }}| j                  ||fd       y )Nr|   r  r  Tr  )r  r   r  )r[   r  r  s      r_   r   zPositionWindow.PostDraw  sG    ~~dii
3C8$))J:OPS:TU1		q!fD	)r`   Nr  )r  r  r  r  rL   r   r<   r  r  r  r  r   rp  r`   r_   r  r    s.    2 .0YY 5$
"
*r`   r  c                   B    e Zd ZdZej
                  fdZd ZddZd Z	y)r  zView position control widgetc                     t        j                  | |||fi | | j                  t        d             | j                  j
                  | _        | j                          y )Nz9Adjusts the distance and direction of the image viewpoint)r  r<   r  r@   r9   r3   r   r   r  s        r_   r<   zViewPositionWindow.__init__  sG    fiFvFUVWNN''	r`   c                     t         j                  | ||      \  }}t        d      }t        j                  | j
                  |       ||fS )NTr   )r  r  r   rL   r   r9   r[   r,  r-  r  r  r   s         r_   r  zViewPositionWindow.UpdatePos  s?    ''ff=14(
T^^U+!tr`   c                 
    ||fS rF  rp  r[   r  r  toLights       r_   r+  z'ViewPositionWindow.TransformCoordinates  s    !tr`   c                    d| j                   j                  d   d<   t        j                  | |       |j	                         r@| j
                  | j                   j                  d<   | j                   j                  d       nE|j                         r5d| j                   j                  d<   | j                   j                  d       |j                          y )NFrQ  r  r1   r  )
r9   r}   r  r  r/  r1   rI   rJ   LeftUpr   r   s     r_   r  zViewPositionWindow.OnMouse  s    -2U#E*tU+-1ZZDNN!!'*NN""5"9\\^-2DNN!!'*NN""5"9

r`   Nr  )
r  r  r  r  rL   r   r<   r  r+  r  rp  r`   r_   r  r    s     &-/YY r`   r  c                   H    e Zd ZdZej
                  fdZd ZddZd Z	d Z
y)	r  zLight position control widgetc                     t        j                  | |||fi | | j                  t        d             | j                  j
                  | _        d| _        | j                          y )NzSAdjusts the light direction. Click and drag the puck to change the light direction.F)	r  r<   r  r@   r9   r~   r   r1   r   r  s        r_   r<   zLightPositionWindow.__init__  sX    fiFvFI	
 NN((	
r`   c                     t         j                  | ||      \  }}t        d      }t        j                  | j
                  |       ||fS )NFr   )r  r  r   rL   r   r9   r5  s         r_   r  zLightPositionWindow.UpdatePos  s?    ''ff=1e,
T^^U+!tr`   c                 V    |rd|z  dz
  }d|z  dz   }||fS |dz   dz  }d|z
  dz  }||fS )Nr   r    rp  r7  s       r_   r+  z(LightPositionWindow.TransformCoordinates!  sO    A	AQ
A !t Q!AQ!A!tr`   c                     t        d      }t        j                  | j                  |       | j                  d   d   | j                  d   d   }}| j                  ||d      \  }}| j                  ||fd       y )	NTr   r|   r  r  F)r8  r  )r   rL   r   r9   r   r+  r  )r[   r   r  r  s       r_   r   zLightPositionWindow.PostDraw*  sr    d+
T^^U+yy$S)499Z+@+E1((Au(=1		q!fD	)r`   c                     t         j                  | |       |j                         r6d| j                  j                  d<   | j                  j                  d       y y )NFr1   r  )r  r  r:  r9   rI   rJ   r   s     r_   r  zLightPositionWindow.OnMouse2  sI    tU+<<>-2DNN!!'*NN""5"9 r`   Nr  )r  r  r  r  rL   r   r<   r  r+  r   r  rp  r`   r_   r  r  	  s%    '-/YY *:r`   r  )Mr  r\  r  r   r1  rL   wx.lib.colourselectlibcolourselectr  wx.lib.scrolledpanelscrolledpanelr   wx.lib.filebrowsebuttonfilebrowsebuttonr^  wx.lib.agw.flatnotebookagwflatnotebookr  ImportErrorwx.lib.flatnotebookr   r  wx.lib.agw.foldpanelbarwx.lib.foldpanelbarwx.lib.agw.floatspin	floatspinr`  grass.scriptscriptr  corer   gui_core.gselectr   	core.gcmdr   r   modules.colorrulesr   core.settingsr	   gui_core.widgetsr
   r   r   r   r   r   gui_core.wrapr   r   r   r   r   r   r   r   r   r   r   
core.debugr   nviz.mapwindowr   r   r   r   wxnvizr!   r"   r#   r%   r  r  r  rp  r`   r_   <module>r^     s1  * 
 
  
 	 " " ! ! , ,%((*'%%   ) * 2 &  $      6 5AY4Y AY4HrK*V K*\ D-:. -:Ow  %$$%  **-- *))**  	BsY   C0  D D1 0D DD.
DD.D(%D.'D((D.-D.1D;:D;