
    ը	f,                    
   d Z ddlm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Z ddlmZmZ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" ddl#m$Z$ ddl%m&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFc mZG  G d dej                        ZI G d dej                        ZJ G d dej                        ZK G d dej                        ZL G d de?      ZM G d dej                        ZN G d d e      ZOd! ZPd" ZQd# ZRd$ ZSd% ZTd& ZUeVd'k(  r eGj                  d(        eP        yy# e$ r
 ddlmZ Y Fw xY w))a  
@package animation.dialogs

@brief Dialogs for animation management, changing speed of animation

Classes:
 - dialogs::SpeedDialog
 - dialogs::InputDialog
 - dialogs::EditDialog
 - dialogs::ExportDialog
 - dialogs::AnimSimpleLayerManager
 - dialogs::AddTemporalLayerDialog


(C) 2013 by the GRASS Development Team

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

@author Anna Petrasova <kratochanna gmail.com>
    )print_functionN)HyperlinkCtrl)GMessageGError
GException)	globalvar)MapLayersDialogGetImageHandlers)PreferencesBaseDialog)GUI)UserSettings)Select)FloatValidator)BitmapButtonButtonCheckBoxChoiceComboBox
EmptyImageRadioButtonSpinCtrl	StaticBox
StaticTextTextCtrl)TemporalModegetRegisteredMapsgetNameAndLayergetCpuCount)AnimationData	AnimLayer)AnimSimpleLmgrToolbarSIMPLE_LMGR_STDS)SimpleLayerManagerSIMPLE_LMGR_RASTERSIMPLE_LMGR_VECTORSIMPLE_LMGR_TB_TOP)Signalc                       e Zd Z ed      ddddfdZd Zd Z eee      Zd	 Z	d
 Z
 ee	e
      Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)SpeedDialogzAdjust speed of animationNr      c                    t         j                  j                  | |t         j                  |t         j                         t        d      | _        || _        || _        | j                  | _	        | j                  | _
        | j                          || _        || _        | j                  | j                         | j!                  | j                         y )NparentidtitlestylezSpeedDialog.speedChanged)wxDialog__init__ID_ANYDEFAULT_DIALOG_STYLEr'   speedChangedminimumDurationdefaultSpeedlastAppliedValuelastAppliedValueTemp_layouttemporalModetimeGranularity_fillUnitChoicechoiceUnitsInitTimeSpin)selfr-   r/   r<   r7   r=   initialSpeeds          2/usr/lib/grass83/gui/wxpython/animation/dialogs.pyr3   zSpeedDialog.__init__P   s     			yy)) 	 	
 ##=>.( $ 1 1$($5$5!(.T--.$++,    c                     || _         y N_timeGranularity)rA   grans     rC   SetTimeGranularityzSpeedDialog.SetTimeGranularityp   s
     $rD   c                     | j                   S rF   rG   rA   s    rC   GetTimeGranularityzSpeedDialog.GetTimeGranularitys   s    $$$rD   )fsetfgetc                 2    || _         | j                          y rF   )_temporalMode_setTemporalMode)rA   modes     rC   SetTemporalModezSpeedDialog.SetTemporalModex   s    !rD   c                     | j                   S rF   )rQ   rL   s    rC   GetTemporalModezSpeedDialog.GetTemporalMode|   s    !!!rD   c                    t        j                  t         j                        }t        | t         j                  dt        d      z        | _        t        j                  | j                  t         j                        }t        j                  dd      }t        | t         j                  t        d            }t        | t         j                  t        d            }t        | t         j                  | j                  d	| j                  
      | _        |j                  |dt         j                  t         j                   z         |j                  | j                  dt         j"                         |j                  |dt         j                  t         j                   z         |j%                  d       |j                  |ddt         j&                  t         j(                  z         || _        |j                  |dt         j(                  t         j&                  z  d       t        | t         j                  dt        d      z        | _        t        j                  | j,                  t         j                        }t        j                  dd      }t        | t         j                  t        d            }t        | t         j                  t        d            }t        | t         j                  t        d            }t        | t         j                  | j                  d	| j                  
      | _        t        j0                  | t         j                        | _        |j                  |dt         j                  t         j                   z         |j                  | j2                  dt         j"                  t         j(                  z         |j                  |dt         j                  t         j                   z         |j                  | j.                  dt         j"                  t         j(                  z         |j                  |dt         j                  t         j                   z         |j%                  d       || _        |j                  |ddt         j&                  t         j(                  z         |j                  |dt         j(                  t         j&                  z  d       t7        | t         j8                        | _        t7        | t         j<                        | _        t7        | t         j@                        | _!        | j:                  jE                          | j:                  jG                  t         jH                  | jJ                         | j>                  jG                  t         jH                  | jL                         | jB                  jG                  t         jH                  | jN                         | jG                  t         jP                  | jN                         t        jR                         }|jU                  | j:                         |jU                  | j>                         |jU                  | jB                         |jW                          |j                  |dt         j(                  t         j&                  z  d       | jY                  |       |j[                  |        y)zLayout window %s zSimple moder-   r.   label   hgapvgapzFrame duration:r.   rZ   msi'  r.   minmaxinitialr   r   posflagr      )r      r   rj   )
proportionborderrh   rl   rh   rm   zTemporal modez
Time unit:zDuration of time unit:r.   rj   r   rj   rj   rj   rk   N).r1   BoxSizerVERTICALr   r4   _nontemporalBoxStaticBoxSizerGridBagSizerr   r   r7   r8   spinDurationAddALIGN_CENTER_VERTICAL
ALIGN_LEFTALIGN_CENTERAddGrowableColALLEXPANDnontemporalSizertemporalBoxspinDurationTempr   r?   temporalSizerr   ID_OKbtnOkID_APPLYbtnApply	ID_CANCEL	btnCancel
SetDefaultBind
EVT_BUTTONOnOkOnApplyOnCancel	EVT_CLOSEStdDialogButtonSizer	AddButtonRealizeSetSizerFit)rA   	mainSizerbox	gridSizerlabelDuration
labelUnitslabelTimeUnitbtnStdSizers           rC   r;   zSpeedDialog._layout   s   KK,	 (BIIVa6F-F
  3 3R[[AOO3	"4BIIQ?P=QR!D'B
$yy$$%%
 	vB,D,Dr}},T 	 	
 	d''V"//JF)A)ABMM)Q 	 	
 	  #	a8JK )cabii"&&.@K %BIIVa6H-H
  0 0"++>OO3	"4BIIQ|_M"RYYa(@&A
  !D'B
 (yy$$%%!
 99Tbii8 	vB,D,Dr}},T 	 	
 	d&&F2999TUvB,D,Dr}},T 	 	
 	!!vBOObii4O 	 	
 	F)A)ABMM)Q 	 	
 	  #&	a8JKcabii"&&.@KD"((+
tR[[1bll3



tyy12==$,,7BMM4==9		",,.--/djj)dmm,dnn-kabii"&&6HQRSi drD   c                 `   | j                   j                  | j                  t        j                  k(         | j
                  j                  | j                  t        j                  k(         | j                  j                         D ]<  }|j                         j                  | j                  t        j                  k(         > | j                  j                         D ]<  }|j                         j                  | j                  t        j                  k(         > | j                          y rF   )rv   Enabler<   r   NONTEMPORALr   TEMPORALr   GetChildren	GetWindowr   Layout)rA   childs     rC   rR   zSpeedDialog._setTemporalMode   s    ""4#4#48P8P#PQ 1 1\5J5J JK''335 	QEOO$$T%6%6,:O:O%OP	Q**668 	TEOO$$T%6%6,:R:R%RS	T 	rD   c                    t        d      t        d      t        d      t        d      t        d      t        d      g}g d}t        ||      D ]  \  }}|j                  ||        | j                  t        j
                  k(  rK| j                  d   }d	}t        |      D ]  \  }}	|	j                  |      s|} n |j                  |       y |j                  d	       y )
Nyearmonthdayhourminutesecond)yearsmonthsdayshoursminutessecondsrj   r   )
ru   zipAppendr<   r   r   r=   	enumerate
startswithSetSelection)
rA   choiceWidgettimeUnitsChoice	timeUnitsitemcdataunitindexitimeUnits
             rC   r>   zSpeedDialog._fillUnitChoice   s    fIgJeHfIhKhK
 O		: 	-KD%e,	-  5 55''*DE(3 8&&t,E %%e,%%a(rD   c                 F    | j                          | j                  d        y rF   )_applyr   rA   events     rC   r   zSpeedDialog.OnOk  s    drD   c                 $    | j                          y rF   )r   r   s     rC   r   zSpeedDialog.OnApply  s    rD   c                     | j                   j                  | j                         | j                  j                  | j                         | j                          y rF   )ry   SetValuer9   r   r:   Hider   s     rC   r   zSpeedDialog.OnCancel  s?    ""4#8#89&&t'@'@A		rD   c                     | j                   t        j                  k(  r| j                  j	                         }| j                  j                  |      }| j                  |d      }| j                  |      }| j                  \  }}t        |      }| j                  ||      }| j                  |      }|}||z  t        |      z  }	| j                  j                  |	       y | j                  j                  |       y )Nrj   r   number)r<   r   r   r?   GetSelectionGetClientData
_timedelta_total_secondsr=   floatr   r   ry   )
rA   timeTickr   r   deltaseconds1r   seconds2valuer`   s
             rC   r@   zSpeedDialog.InitTimeSpin  s     5 55$$113E##11%8DOOaO8E**51H//LFD6]FOOfO=E**51HE!E(O3B!!**2.&&x0rD   c                 :   | j                   t        j                  k(  r;| j                  j	                         }| j                  j	                         | _        n'| j                   t        j                  k(  r| j                  j                         }| j                  j                  |      }| j                  |d      }| j                  |      }| j                  \  }}t        |      }| j                  ||      }| j                  |      }| j                  j	                         }||z  t        |      z  }|| j                  k  rt!        | t#        d             y | j                  j	                         | _        ny | j&                  j)                  |       y )Nrj   r   zAnimation speed is too high.r-   message)r`   )r<   r   r   ry   GetValuer9   r   r?   r   r   r   r   r=   r   r   r7   r   ru   r:   r6   emit)	rA   r`   r   r   r   r   r   r   r   s	            rC   r   zSpeedDialog._apply$  sT    8 88""++-B$($5$5$>$>$@D!,"7"77$$113E##11%8DOOaO8E**51H//LFD6]FOOfO=E**51H))224E!E(O3BD(((a0N.OP(,(=(=(F(F(HD%"%rD   c                 v   |dv rt        j                  d|z        }|S |dv rt        j                  d|z        }|S |dv rt        j                  d|z        }|S |dv rt        j                  d|z  	      }|S |d
v rt        j                  d|z        }|S |dv rt        j                  d|z        }S )Nr   g     v@)r   r   g     p>@r   rj   r   )r   r   )r   r   )r   )datetime	timedelta)rA   r   r   r   s       rC   r   zSpeedDialog._timedelta?  s    7?&&FVO<E  X&&Gf,<=E  V^&&AJ7E  W_&&QZ8E  Y&&q6z:E  Y&&q6z:ErD   c                 @    |j                   |j                  dz  dz  z   S )z.timedelta.total_seconds is new in version 2.7.   i  )r   r   )rA   r   s     rC   r   zSpeedDialog._total_secondsO  s    }}uzzB555rD   )__name__
__module____qualname__ru   r3   rJ   rM   propertyr=   rT   rV   r<   r;   rR   r>   r   r   r   r@   r   r   r    rD   rC   r)   r)   O   s     +,-@%% $6=OPO " GLbH)0
1"&6 6rD   r)   c                   f    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zy)InputDialogc                    t         j                  j                  | |t         j                  t         j                  t         j
                  z         |dk(  r| j                  t        d             n|dk(  r| j                  t        d             || _        d | _	        | j                          | j                  d        y )Nr-   r.   r0   addzAdd new animationeditzEdit animationr   )r1   r2   r3   r4   r5   RESIZE_BORDERSetTitleru   animationData_tmpLegendCmdr;   
OnViewMode)rA   r-   rS   r   s       rC   r3   zInputDialog.__init__U  s    
		yy))B,<,<<	 	 	
 5=MM!/01V^MM!,-.*!d#rD   c                    t        j                  | t         j                        | _        t        j                  t         j
                        }| j                  j                  | j                  | j                        t        d             | j                  j                  | j                  | j                        t        d             |j                  | j                  dt         j                  t         j                  z  d       t        | t         j                        | _        t        | t         j                         | _        | j                  j%                          | j                  j'                  t         j(                  | j*                         t        j,                         }|j/                  | j                         |j/                  | j"                         |j1                          |j                  |dt         j                  t         j                  z  d       | j3                  |       |j5                  |        y )	N)r-   r0   GeneralAdvancedrj      rn   r   r[   )r1   Notebook
BK_DEFAULTnotebookrs   rt   AddPage_createGeneralPageru   _createAdvancedPagerz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rA   sizerr   s      rC   r;   zInputDialog._layoutg  sc   4r}}EBKK(d55dmmDa	lSd66t}}Eq}U		$--ABFFRYY4Fq	Q D"((+
bll3



tyy1--/djj)dnn-		+!"))bff2DQ	Oe		$rD   c           
      0
   t        j                  |      }t        j                  t         j                        }t        j                  |t         j
                  t        d      t        d      t        d      t        d      g      | _        | j                  j                  | j                  j                         t        |t         j
                  | j                  j                        | _        t	        |t         j
                        | _        | j                  j                  }d	}t!        | j                  j"                        D ]-  \  }\  }}| j                  j%                  ||
       ||k(  s,|}/ | j                  j                  |       | j                  j'                  t        d             | j                  j)                  t         j*                  | j,                         t        j.                  ddd      }	|	j1                  t3        |t         j
                  t        d            t         j4                         |	j1                  | j                  dt         j6                         |	j1                  t3        |t         j
                  t        d            t         j4                         |	j1                  | j                  dt         j8                         |	j1                  t3        |t         j
                  t        d            t         j4                         |	j1                  | j                  dt         j8                         |	j;                  d	d       |	j;                  dd       |j1                  |	d	t         j<                  t         j6                  z  d       t        d      }
t3        ||
      | _        | j>                  jA                  t         jB                  jE                  t         jF                               |j1                  | j>                  d	t         j6                  t         jH                  z  d       | jK                  |      | _&        | jO                  |      | _(        |j1                  | jL                  dt         j6                  t         j<                  z  d       |j1                  | jP                  d	t         j6                  t         j<                  z  d       |jS                  |       |jU                  |       |S )Nr-   ztop leftz	top rightzbottom leftzbottom rightr.   choicesr.   r   ro   r   
clientDatazSelect 2D or 3D viewrk   r[   )colsr]   r^   zName:r_   rh   rj   rl   rh   zWindow position:z
View mode:rn   zXFor 3D animation, please select only one space-time dataset
or one series of map layers.rZ   r   )+r1   Panelrs   rt   r   r4   ru   windowChoicer   r   windowIndexr   namenameCtrlnDChoiceviewModer   	viewModesr   
SetToolTipr   
EVT_CHOICEr   FlexGridSizerrz   r   r{   r   ALIGN_RIGHTr~   r   warning3DLayersSetForegroundColourSystemSettings	GetColourSYS_COLOUR_GRAYTEXTLEFT_createDataPanel	dataPanel_create3DPanelthreeDPanelr   r   )rA   r-   panelr   rS   r   r   r  viewModeNamer   rZ   s              rC   r   zInputDialog._createGeneralPage}  s   'KK,	IIyy*+- .!		
 	&&t'9'9'E'EF 299D<N<N<S<STu3!!**+4T5G5G5Q5Q+R 	'A',MM  ( Cx	
 	""5)  #9!:;2==$//:$$!!!<	u!G*=)) 	 	
 	dmm		Bu!4F2GH)) 	 	
 	d''ABNNKu!L/B)) 	 	
 	dmmG  A&  A&iABFFRYY4FqQ+
  *%u=00''(>(>?	
 	  QRYY5HQR 	 	
 ..u5..u5dnnRVV9KTUVd&&1299rvv;MVWXy!erD   c                 H   t        j                  |      }t        j                  t         j                        }t	        j
                  | j                  j                        | _        t        || j                  d      | _
        | j                  j                  t        j                  d   df       |j                  | j                  dt         j                  t         j                   z  d       t        j"                  |t%        d      	      | _        | j&                  j)                  t+        | j                  j,                               t/        |t%        d
      	      | _        | j&                  j3                  t         j4                  | j6                         | j0                  j3                  t         j8                  | j:                         t        j                  t         j<                        }|j                  | j&                  dt         j>                         |j                  | j0                  dt         j@                  d       |j                  |dt         j                  t         j                   z  d       |jC                  |       |jE                  d       |S )NT)r-   	layerListmodalr   P   rj   r[   rn   zShow raster legendr  zSet optionsr  r   )#r1   r  rs   rt   copydeepcopyr   r   
_layerListAnimSimpleLayerManager
simpleLmgr
SetMinSizer   DIALOG_GSELECT_SIZErz   r   r   r   ru   legendr   bool	legendCmdr   	legendBtnr   EVT_CHECKBOXOnLegendr   OnLegendProperties
HORIZONTALr{   r  SetSizerAndFitSetAutoLayout)rA   r-   r  
slmgrSizerhboxs        rC   r  zInputDialog._createDataPanel  s    [[-
--(:(:(D(DE0DOO4
 	""I$A$A!$Db#IJt1299rvv;MVWXkk%q1E/FGT$"4"4">">?@Q}-=>$--8BMM4+B+BC{{2==)1I1IJABGGAFt		BFF0B1MZ(D!rD   c                 "   t        j                  |t         j                        }t        |t         j                  dt	        d      z        }t        j
                  |t         j                        }t        j                  |t         j                  t        j                  t	        d      t	        d      t	        d      t        j                         dd	
	      | _        | j                  j                  r/| j                  j!                  | j                  j                         t#        |t         j                  t	        d            | _        t        j&                  |t         j                  | j                  j(                        | _        | j*                  j-                  | j                  j.                         t        j0                  t         j2                        }|j5                  | j                  dt         j6                         |j5                  |dt         j6                  t         j8                  z  d       t        j0                  t         j2                        }|j5                  | j$                  dt         j:                         |j5                  | j*                  dt         j6                         |j5                  |dt         j6                  t         j8                  z  d       |j=                  |       |j?                  d       |S )Nro   rX   z3D view parametersrY   zWorkspace file:z2Choose workspace file to import 3D view parametersBrowser   z"GRASS Workspace File (*.gxw)|*.gxw)	r-   r.   size	labelTextdialogTitle
buttonTextstartDirectoryfileModefileMaskzParameter for animation:r  r   rj   r  r   rn   T) r1   r  r4   r   ru   rw   rt   
filebrowseFileBrowseButtonr   r)  osgetcwdfileSelectorr   workspaceFiler   r   
paramLabelr   nvizParametersparamChoiceSetStringSelectionnvizParameterrs   r1  rz   r   r   r{   r2  r3  )rA   r-   r  	dataStBoxdataBoxSizerr5  s         rC   r  zInputDialog._create3DPanel  s   BII.RYYfq9M7N.N
	 ((BKK@ '77yy..)*QR{99;9

 ++&&t'9'9'G'GH$299A&@$A
 99bii););)J)J
 	++D,>,>,L,LM{{2==)""qryyA!"))bff2DQO{{2==)QR5M5MN!!abii@!"))bff2DQO\*D!rD   c                     t        j                  |      }t        j                  t         j                        }t	        |dt        d      z        }t        j                  |t         j                        }t        j                  dd      }t        |t        d             _	        |j                   j                  d	t         j                  
       t        |dd       _         j                  j                  r/ j                  j!                   j                  j                         |j                   j                  dt         j                  t         j"                  z  
       t%        |t        d             _         j&                  j!                  d       |j                   j&                  ddt         j"                          j&                  j)                  t         j*                   fd       t-        |t        d      t         j.                         _        |j                   j0                  ddt         j"                  t         j2                  z         t        |dd       _        |j                   j4                  dt         j                  t         j"                  z  
       t-        |t        d             _         j6                  j9                  t        d             |j                   j6                  ddt         j"                  t         j2                  z         t        j                  t         j:                        }t=        |t?                      _         t=        |t?                      _!        |j                  t        |t        d            d t         j                  t         j2                  z  d!       |j                   j@                  d"t         j2                  d!       |j                  t        |t        d#            d t         j                  t         j2                  z  d!       |j                   jB                  d"t         j2                  d!       |j                  |d$t         j                  t         j"                  z  
        j                  j4                  r j&                  j!                  d%        j0                  j!                  d%        j6                  j!                  d        j4                  j!                   j                  j4                          j                  jD                  r j&                  j!                  d%        j0                  j!                  d        j6                  j!                  d%        j                  jD                  } j@                  j!                  tG        |d                  jB                  j!                  tG        |d"                 j0                  j)                  t         jH                   fd&        j6                  j)                  t         jH                   fd'        jK                          |jM                  d"       |j                  |d t         j"                  t         jN                  z  d!       |j                  |d t         j"                  t         jN                  z  d!       |jQ                  |       |jS                  |       |S )(Nr   rX   zSet spatial extent in 2D viewr-   rZ   r   r\   zUse saved region:r  re   rf   region)r*   )r-   typer8  ri   zAnimate region changeFrp   rr   rg   spanrh   c                 $    j                         S rF   )_onAnimateExtentevtrA   s    rC   <lambda>z1InputDialog._createAdvancedPage.<locals>.<lambda>   s    )>)>)@ rD   zEnd region:)rZ   r0   rk   r   
   )rg   rm   rh   rk   rj   zZoom value:z?N-S/E-W distances in map units used to gradually reduce region.r   r   )	validatorzN-S:r   rn   rj   zE-W:r   rj   Tc                 $    j                         S rF   _enableRegionWidgetsrU  s    rC   rW  z1InputDialog._createAdvancedPage.<locals>.<lambda>O  s    D,E,E,G rD   c                 $    j                         S rF   r_  rU  s    rC   rW  z1InputDialog._createAdvancedPage.<locals>.<lambda>Q  s    D<U<U<W rD   )*r1   r  rs   rt   r   ru   rw   rx   r   stRegionLabelrz   r{   r   stRegionr   startRegionr   r   r   animateRegionCheckboxr   r.  r   RB_GROUPendRegRadior  	endRegion	zoomRadior  r1  r   r   zoomNSzoomEWzoomRegionValuestrEVT_RADIOBUTTONrT  r~   r   r   r   )	rA   r-   r  r   r   r   r   	zoomSizerzooms	   `        rC   r   zInputDialog._createAdvancedPage	  s   'KK,	uFQ7V5W,WX!!#r{{3OO3	'Q7J5KLd((f2;S;STe(K))MM""4#5#5#A#ABMMvB,D,Dryy,P 	 	
 &.e1=T;U%V"""++E2&&Fbii 	 	
 	""''OO@	
 'uAm4DBKKXd&&F2BIIPRPWPWDWXu8)LNNR-E-E		-Q 	 	
 %U!M2BC!!RS	
 	dnn&"))bggBUVKK.	u0@Au0@AuAfI.))BGG3	 	 	
 	dkkabggaHuAfI.))BGG3	 	 	
 	dkkabggaHiV"2J2JRYY2VW''&&//5%%d+NN##E*NN##D$6$6$@$@A--&&//5%%e,NN##D)%%55DKK  T!W.KK  T!W. G	
 	B..0WX  #		)		BFF0B1	Me		BFF0B1My!erD   c                 l   | j                   j                         }| j                  j                  |       | j                  j                  |       | j
                  j                  |       | j                  j                  |       | j                  j                  |       |r| j                          y y rF   )	re  	IsCheckedrh  r   rj  rk  ri  rg  r`  )rA   checkeds     rC   rT  zInputDialog._onAnimateExtent]  s    ,,668g&7#7#g&(%%' rD   c                     | j                   j                         }| j                  j                  |       | j                  j                  |        | j
                  j                  |        y)zQEnables/disables region widgets
        according to which radiobutton is active.N)rg  r   rh  r   rj  rk  )rA   endRegs     rC   r`  z InputDialog._enableRegionWidgetsg  sR     !!**,f%v:&v:&rD   c                    | j                   j                         }| j                          | j                  j	                  |dk(         | j
                  j                  |dk(         | j                  j                         }|j                         D ]  }|j                         rF|j                         j                         D ]$  }|j                         j                  |dk7         & Y|j                         sj|j                         j                  |dk7          |dk(  r| j                          | j                   j                         }|j                  | j                   |dk(  d       |j#                          | j%                          y )Nrj   r   T)r  r   Freezer'  
Activate3Dr  Showrc  GetContainingSizerr   IsSizerGetSizerr   r   IsWindowrT  r  r   Thaw)rA   r   rS   regSizerr   child_r   s          rC   r   zInputDialog.OnViewModeo  s4   }}))+""419-!!$!), ==335))+ 	4E}}#nn.::< 9F$$&--dai89!!((3	4 19!!#   335

4##TQY5		rD   c                     | j                   j                         sy | j                  s| j                  j                  ry ddg}t        | d      j                  || j                  ddf       y )Nd.legendat=5,50,2,5Tr-   r!   cmd	completed)r*  rr  r   r   r,  r   ParseCommand
GetOptDatarA   r   r  s      rC   r/  zInputDialog.OnLegend  sc    {{$$&!3!3!=!==)4t$11R8 	2 	
rD   c                     | j                   r| j                   }n1| j                  j                  r| j                  j                  }nddg}t        | d      j	                  || j
                  ddf       y)zSet options for legendr  r  Tr  r  r  N)r   r   r,  r   r  r  r  s      rC   r0  zInputDialog.OnLegendProperties  sj    $$C))$$..C}-C4t$11R8 	2 	
rD   c                    |r>|| _         | j                  j                         s| j                  j                  d       yy| j                   s3| j                  j
                  s| j                  j                  d       yyy)zProcess decoration layer dataTFN)r   r*  rr  r   r   r,  rA   dcmdlayerparamspropwins        rC   r  zInputDialog.GetOptData  sh    !%D;;((*$$T* + %%d.@.@.J.J$$U+ /K%rD   c                    | j                   j                         dk(  r,t        | j                        dkD  rt	        t        d            d}| j                  D ]  }|j                  st        |d      sd} n |st	        t        d            | j                  | j                  _	        | j                  j                         | j                  _        | j                  j                         | j                  _        | j                   j                         }| j                   j                  |      | j                  _        d | j                  _        | j$                  r5| j&                  j)                         r| j$                  | j                  _        | j*                  j-                         r)| j.                  j                         | j                  _        | j*                  j-                         r)| j2                  j5                         | j                  _        | j                  j                   dk(  r4d | j                  _        d | j                  _        d | j                  _        y | j>                  j                         xr | j:                  j                         }| j@                  j                         xr6 | jB                  j                         xr | jD                  j                         }| jF                  j                         }| jH                  j                         }d | j                  _        d | j                  _        d | j                  _        |s|r|| j                  _        y y |r|| j                  _        nt	        t        d            |r;| j:                  j                         | j                  _        d | j                  _        y |rgtK        | jB                  j                               tK        | jD                  j                               f| j                  _        d | j                  _        y t	        t        d            )	Nrj   z>Only one series or space-time dataset is accepted for 3D mode.FmapsTz*No map series or space-time dataset added.3dz"Region information is not complete)&r  r   lenr%  r   ru   activehasattrr   r   r  r   r
  r  r	  r   r  r,  r   r*  rr  r  IsShownrC  rD  rG  GetStringSelectionrI  rd  rh  rl  rg  ri  rj  rk  rc  re  r   )rA   	hasSeriesr  selisEndisZoomisStartuseAnims           rC   _updatezInputDialog._update  sV   ==%%'1,T__1E1IUV  	__ 	E||v 6 		 QKLMM'+$"&--"8"8":)-):):)G)G)I&mm((*&*mm&A&A#&F#'+${{$$&/3/A/A"",##%/3/@/@/I/I/KD,##%/3/?/?/R/R/TD,&&$.-1D*+/D(15D.  ))+I0G0G0INN##% '$$&'$$& 	
 --((*,,557)-&'+$-1*18"".  18"". #G!HII/3~~/F/F/H"",59""2$++..01$++..016""2 04"", #G!HIIrD   c                 8    | j                   j                          y rF   )r'  UnInitrL   s    rC   r  zInputDialog.UnInit  s     rD   c                    	 | j                          | j                          | j                  t        j                         y # t
        t        t        f$ r*}t        t        |      dt        d             Y d }~y d }~ww xY w)NFzInvalid input)r   showTracebackcaption)r  r  EndModalr1   r   r   
ValueErrorIOErrorr   rm  ru   rA   r   es      rC   r   zInputDialog.OnOk  s[    	TLLNKKMMM"((#J0 	T3q6/@RSS	Ts   ?A B  A;;B N)r   r   r   r3   r;   r   r  r  r   rT  r`  r   r/  r0  r  r  r  r   r   rD   rC   r   r   T  sV    $$,EN4)VRh('.

	,@JD!TrD   r   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)
EditDialogc                 V   t         j                  j                  | |t         j                  t         j                         t        j                  |      | _        || _        | j                  t        d             | j                          | j                  d       || _        d | _        y )Nr   zAdd, edit or remove animations)i,  rO  )r1   r2   r3   r4   r5   r#  r$  r   evalr   ru   r;   SetSizemaxAnimationsresult)rA   r-   evalFunctionr   r  s        rC   r3   zEditDialog.__init__  s|    
		BIIR5L5L 	 	
 "]]=9 	a89:Y*rD   c                 	   t        j                  t         j                        }t        | t         j                  dt        d      z        }t        j                  |t         j                        }t        j                  dd      }|j                  d       t        j                  | t         j                  g t         j                  t         j                  z        | _        | j                  j                  t         j                  | j                         t!        | t         j                  t        d      	      | _        | j"                  j                  t         j$                  | j&                         t!        | t         j                  t        d
      	      | _        | j(                  j                  t         j$                  | j                         t!        | t         j                  t        d      	      | _        | j*                  j                  t         j$                  | j,                         | j/                          |j1                  | j                  ddt         j2                  t         j4                  z  d       |j1                  | j"                  dt         j2                  t         j4                  z  d       |j1                  | j(                  dt         j2                  t         j4                  z  d       |j1                  | j*                  dt         j2                  t         j4                  z  d       |j1                  |dt         j6                  t         j4                  z  d       |j1                  |dt         j4                  t         j6                  z  d       t!        | t         j8                        | _        t!        | t         j<                        | _        | j:                  jA                          | j:                  j                  t         j$                  | jB                         t        jD                         }|jG                  | j:                         |jG                  | j>                         |jI                          |j1                  |dt         j4                  t         j6                  z  d       | jK                  |       |jM                  |        y )NrX   zList of animationsrY   r[   r\   r   r.   r   r0   rz   r_   EditRemovere   r]  rg   rR  rh   rm   ri   rg   rh   rm   rq   rZ  rn   )'r1   rs   rt   r   r4   ru   rw   rx   r~   ListBox	LB_SINGLELB_NEEDED_SBlistboxr   EVT_LISTBOX_DCLICKOnEditr   	addButtonr   OnAdd
editButtonremoveButtonOnRemove_updateListBoxrz   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   )rA   r   r   r   gridBagSizerr   s         rC   r;   zEditDialog._layout  s@   KK,	BIIVa8L6M-M
 !!#r{{3AA6##A& zzRYY",,2P
 	"//=!E(CBMM4::6 "))1V9ER]]DKK8"4BIIQx[Ir}}dmm<LL))BII5 	 	
 	NN))BII5	 	 	
 	OO))BII5	 	 	
 	))BII5	 	 	
 			,1266BII3Ea	Pe		BFF0B1M D"((+
bll3



tyy1--/djj)dnn-kabii"&&6HQRSi drD   c                     | j                   j                          | j                  D ])  }| j                   j                  |j                  |       + | j                  r| j                   j                  d       y y )Nr  r   )r  Clearr   r   r
  r   )rA   anims     rC   r  zEditDialog._updateListBoxG  sb    && 	<DLL		d;	<LL%%a( rD   c                     | j                   D cg c]  }|j                   }}t        | j                        D ]
  }||vs|c S  y c c}w rF   )r   r	  ranger  )rA   r  indicesr   s       rC   _getNextIndexzEditDialog._getNextIndexN  sS    040B0BC4##CCt))* 	A	 	 Ds   Ac                    | j                         }|$t        | t        d      | j                  z         y t	               }t        | j                        }|j                  ||       t        | d|      }|j                          |j                         t        j                  k(  r!|j                          |j                          y |j                          | j                  j                  |       | j!                          y )Nz#Maximum number of animations is %d.)r   r   r-   rS   r   )r  r   ru   r  r   r  r   SetDefaultValuesr   CenterOnParent	ShowModalr1   r   r  Destroyappendr  )rA   r   r	  animDataanimationIndexdlgs         rC   r  zEditDialog.OnAddU  s    ((*?@4CUCUU  ?T//0!!+~>EJ==?bll*JJLKKM!!(+rD   c                    | j                   j                         }|t        j                  k(  ry | j                   j	                  |      }t        | d|      }|j                          |j                         t        j                  k(  r!|j                          |j                          y |j                          | j                          y )Nr   r  )r  r   r1   	NOT_FOUNDr   r   r  r  r   r  r  r  )rA   r   r   r  r  s        rC   r  zEditDialog.OnEditl  s    ))+BLL <<--e4F(K==?bll*JJLKKMrD   c                     | j                   j                         }|t        j                  k(  ry | j                   j	                  |      }| j
                  j                  |       | j                          y rF   )r  r   r1   r  r   r   remover  )rA   r   r   r  s       rC   r  zEditDialog.OnRemove|  sW    ))+BLL <<--e4!!(+rD   c                     | j                   S rF   )r  rL   s    rC   	GetResultzEditDialog.GetResult  s    {{rD   c                    t        | j                  D cg c]  }|j                   c}      }t        |      t        | j                        k7  rt	        | t        d             y 	 | j                  | j                        \  }}| j                  ||f| _	        | j                  t        j                         y c c}w # t        $ r"}t	        | |j                  d       Y d }~y d }~ww xY w)NzXMore animations are using one window. Please select different window for each animation.r   Fr-   r   r  )setr   r	  r  r   ru   r  r   r   r  r  r1   r   )rA   r   r  r  r<   tempManagerr  s          rC   r   zEditDialog.OnOk  s    D4F4FGDt''GHw<3t1122J 	(,		$2D2D(E%L+ ))<Ebhh# H  	$uE	s   B9'B> >	C)C$$C)N)r   r   r   r3   r;   r  r  r  r  r  r  r   r   rD   rC   r  r    s1    
BH).  rD   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)ExportDialogc                 >   t         j                  j                  | |t         j                  t	        d      t         j
                         g | _        || _        || _        | j                          t        d      | _        t        j                  | j                         y )NzExport animationr,   zExportDialog::doExport)r1   r2   r3   r4   ru   r5   decorationstemporalr   r;   r'   doExport	CallAfter_hideAll)rA   r-   r  r   s       rC   r3   zExportDialog.__init__  sx    
		yy&')) 	 	
    78
T]]#rD   c                    t        j                  | t         j                        }t        j                  t         j                        }|j                  | j                  |      t        d             |j                  | j                  |      t        d             |j                  |dt         j                  t         j                  z  d       t        | t         j                        | _        | j                  j                  t        d             t        | t         j                         | _        | j                  j%                          | j                  j'                  t         j(                  | j*                         t        j,                         }|j/                  | j                         |j/                  | j"                         |j1                          |j                  |dt         j                  t         j                  z  d       | j3                  |       | j4                  j7                  | j8                  d	       | j4                  j7                  | j:                  d
       | j4                  j7                  | j<                  d	       | j4                  j7                  | j>                  d	       | j4                  j7                  | j@                  d
       |jC                  |        y )Nro   FormatpagetextDecorationsr   r[   rn   ExportTF)"r1   r   r4   rs   rt   r   _createExportFormatPanelru   _createDecorationsPanelrz   r   r   r   r   	btnExportSetLabelr   r   r   r   r   OnExportr   r   r   r   hidevboxry  fontBoximageBoxtextBoxposBox	informBoxr   )rA   r   r   r   s       rC   r;   zExportDialog._layout  s   ;;t		2KK,	d;;HEAhKX--h7a>N 	 	
 	h1299rvv3EaPbhh/(,bll3!!#BMM4==9 --/dnn-dnn-kabii"&&6HQRSi  	4<<.4==%04<<.4;;-4>>51drD   c                    t        j                  |t         j                        }t        j                  t         j                        }|j                  | j                  |      dt         j                  t         j                  z  d       |j                  | j                  |      dt         j                  t         j                  z  d       |j                  |       |j                  |       |S )Nro   r   rY  rn   )r1   r  r4   rs   rt   rz   _createDecorationsListr   r   _createDecorationsPropertiesr   r   )rA   r   r  r   s       rC   r  z$ExportDialog._createDecorationsPanel  s    bii0BKK(		''."))#	 	 	
 			--e4"))#	 	 	
 	u		%rD   c                     t        j                  dd      }|j                  d       t        j                  |t         j                  g t         j
                  t         j                  z         _         j                  j                  t         j                   j                         |j                   j                  ddt         j                  t         j                  z  d       g d}t        d	      t        d
      t        d      g}d}t        ||      D ]  \  }}|dk(  r j                   t"        j$                  k(  r)t'        |t         j                  ||      }|j                  t         j(                  |f fd	       |j                  ||dft         j                  t         j                  z  d       |dz  } t'        |t         j                  t        d            }	|	j                  t         j(                   j*                         |j                  |	|dft         j                  t         j                  z  d       |S )Nr[   r\   r   r  re   )   rj   r  timeimager  zAdd time stampz	Add imagezAdd textr  )r.   r
  rZ   c                 (    j                  | |      S rF   )OnAddDecorationrV  temprA   s     rC   rW  z5ExportDialog._createDecorationsList.<locals>.<lambda>  s    T-A-A#t-L rD   rj   r  r  r_   )r1   rx   r~   r  r4   r  r  r  r   EVT_LISTBOXOnSelectionChangedrz   r{   r   ru   r   r  r   r   r   r   r  )
rA   r  r  buttonNamesbuttonLabelsr   
buttonNamebuttonLabelbtnr  s
   `         rC   r  z#ExportDialog._createDecorationsList  s   AA6##A&zzbii2<<"//3Q
 	"..$*A*ABLL))BII5 	 	
 0*+Q{^Qz]K'*;'E 	#JV#9Q9Q(Q299:[QCHH!+L !Qb&>&>&JST   FA	 e		8E"--7A))BII5	 	 	
 rD   c                    t        j                  t         j                        | _        t        j                  t         j                        | _        | j                  t        j                  k(  rt        d      }nt        d      }t        |t         j                  |      }|j                  d       | j
                  j                  |dt         j                  t         j                  z  d       | j                  j                  | j
                  dt         j                   t         j"                  z  d       t        j                  t         j                        | _        | j$                  j                  t        |t         j                  t        d	            dt         j                  t         j                  z  d       t        |t         j                  t        d
            | _        | j$                  j                  | j&                  dt         j(                  t         j                  z  t         j*                  z  d       t-        |t         j                  t        d            }|j/                  t         j0                  | j2                         | j$                  j                  |dt         j                         | j                  j                  | j$                  dt         j                   t         j"                  z  d       t        j                  t         j                        | _        t7        t9        dd            \  }}t;        j<                  |t         j                  |t        d      t        d      t        d      t?        j@                         t         jB                  | jD                  	      | _#        | j4                  j                  | jF                  dt         j                          | j                  j                  | j4                  dt         j                   t         j"                  z  d       t        j                  t         j                        | _$        | jH                  j                  t        |t         j                  t        d            dt         j                  t         j                  z  d       tK        |t         j                        | _&        | jL                  j/                  t         jN                  | jP                         | jH                  j                  | jL                  dt         j                          | j                  j                  | jH                  dt         j                          | jS                  |      | _*        | j                  j                  | jT                  dt         j                   t         jV                  z  d       | j                  S )NzEAdd time stamp, image or text decoration by one of the buttons above.z9Add image or text decoration by one of the buttons above.r_     rj   r[   rn   r   zFont settings:zSample textzSet fontr  rY  zImage file:zChoose image filer7  )	r-   r.   r>  r9  r:  r;  r<  r=  changeCallbackzText:ro   ),r1   rs   rt   r  r1  r  r  r   r   ru   r   r4   Wraprz   r{   RIGHTr   BOTTOMr  sampleLabelr}   r  r   r   r   OnFontr  r
   r   r?  r@  rA  rB  FD_OPEN
OnSetImagebrowser  r   textCtrlEVT_TEXTOnText_positionWidgetr  TOP)rA   r  rZ   
fontButtonfiletypeltypes         rC   r  z)ExportDialog._createDecorationsProperties  s   BKK0R]]3==L111WE QRE5RYYe<

3ab&>&>&IRS 	 	
 	NNqryy299/DQ 	 	

 {{2==1u!4D2EF))BHH4	 	 	
 &e		=AQR288+bgg5	 	 	
 Ebiiq}E
t{{38P8PQLLQRYY-B1 	 	

 BMM2*:b"+=>% 11yy&-.{99;ZZ??

 	$++!"))DMMabii")).CA 	 	
 {{2==1u!G*=))BHH4	 	 	
 !29952;;41299E$,,1299E**51$++!"))bff:LUVW}}rD   c           	          t        j                  dd      }t        |t         j                  t	        d            }|j                  d       t        |t         j                  ddd	       _        t        |t         j                  ddd	       _         j                  j                  t         j                  d fd
	        j                  j                  t         j                  d fd	       |j                  |ddt         j                         |j                  t        |t         j                  t	        d            dt         j                         |j                  t        |t         j                  t	        d            dt         j                         |j                   j                  d       |j                   j                  d       |S )Nr[   )r^   r]   zGPlacement as percentage of screen coordinates (X: 0, Y: 0 is top left):r_   r  r   d   rY  ra   c                 (    j                  | |      S rF   
OnPositionr  s     rC   rW  z.ExportDialog._positionWidget.<locals>.<lambda>n      4??33M rD   c                 (    j                  | |      S rF   r%  r  s     rC   rW  z.ExportDialog._positionWidget.<locals>.<lambda>q  r'  rD   re   )rj   r   rQ  zX:rp   rf   zY:rr   rq   )rg   )rj   r   )X)Y)r1   rx   r   r4   ru   r  r   spinXspinYr   EVT_SPINCTRLrz   r   r{   )rA   r  gridrZ   s   `   rC   r  zExportDialog._positionWidget`  sU   AA.yy@
 	

3e		qc2N
e		qc2N


OOM	
 	

OOM	
 	Fbii@u!D':)) 	 	

 	u!D':)) 	 	

 	((rD   c           
          t        j                  |t         j                        }t        j                  t         j                        }t        j                  t         j
                        }t        d      t        d      t        d      t        d      g}t        j                  |t         j                  |       _         j                  j                  d        j                  j                  t         j                   fd       |j                  t        |t         j                  t        d	      
      dt         j                  t         j                  z  d       |j                   j                  dt         j                   t         j                  z  d       |j                  |dt         j                   t         j                  z  d       t        j                  t         j
                        }|j#                  d       t        j                  t         j                         _        |j                   j$                  dt         j                          |j                  |dt         j                          g  _        t        j                  |t         j                        }t        |t         j                  t        d      
      }t)        |t         j                  t        d             _        t        |t         j                  t        d      
      }	g d}
t        j                  ||
       _         j,                  j                  d       t/        j0                  |t         j                  t        d      t        d      t        d      t3        j4                                _        t        j8                  dd      }|j                  |dt         j                         |j                   j*                  dt         j                          |j                  |	d t         j                         |j                   j,                  d!t         j                          |j                   j6                  d"t         j                   d#$       |j;                  d       |j=                  |       |j?                  |        j$                  j                  |dt         j                   t         j                  z  d        j&                  jA                  |       t        j                  |t         j                        }t/        jB                  |t         j                  d%t        d&      t        d'      t        d      t3        j4                         t         jD                  (       _#        t        j8                  dd      }|j;                  d       |j                   jF                  dt         j                          |j=                  |       |j?                  |        j$                  j                  |dt         j                   t         j                  z  d        j&                  jA                  |       t        j                  |t         j                        }t/        jB                  |t         j                  d)t        d*      t        d'      t        d      t3        j4                         t         jD                  (       _$        t        j8                  dd      }|j;                  d       |j                   jH                  dt         j                          |j=                  |       |j?                  |        j$                  j                  |dt         j                   t         j                  z  d        j&                  jA                  |       t        j                  |t         j                        }tK        jL                  d+d,      }|s7t        d-      }t        ||.      }|jO                  t         jP                         t/        jB                  |t         j                  d/t        d0      t        d'      t        d      t3        j4                         t         jD                  (       _)        t        |t         j                  t        d1      2      }t)        |t         j                  d34       _*        t        |t        d5      .      }t)        |6       _+         jV                  jY                  t        d7             t        j8                  dd      }|j                   jR                  dd#t         j                   8       |j                  |d t         j                         |j                   jT                  d!t         j                          |j                  |d"t         j                         |j                   jV                  d9t         j                          |s4|j                  d:d#t         j                  t         j                   z  8       |j;                  d       |j=                  |       |j?                  |        j$                  j                  |dt         j                   t         j                  z  d        j&                  jA                  |       t        j                  t         j
                        }d; jZ                  z  }|j                  t        |t         j                  t        d<      |z  
      dt         j                          |j                  |dt         j                  d       |j=                  |       |j?                  |        j]                  d=       |S )>Nro   zimage sequencezanimated GIFSWFAVI)r-   r.   r   r   c                 B    j                  | j                               S rF   )ChangeFormatr   )r   rA   s    rC   rW  z7ExportDialog._createExportFormatPanel.<locals>.<lambda>  s    ):):5;M;M;O)P rD   z
Export to:r_   rk   rn   rj   r   r[   r  r-   r.   zFile prefix:
animation_r   zFile format:)PNGJPEGGIFTIFFPPMBMP)r   z
Directory:zChoose directory for exportr7  )r-   r.   r9  r:  r;  r<  r\   re   rf   ri   rp   rq   rX  rr   )rg   rh   rR  zGIF file (*.gif)|*.gifz	GIF file:zChoose file to save animation)r-   r.   r>  r9  r:  r;  r<  r=  zSWF file (*.swf)|*.swfz	SWF file:ffmpegz--helpz`Program 'ffmpeg' was not found.
Please install it first and make sure
it's in the PATH variable.rM  zAVI file (*.avi)|*.aviz	AVI file:zVideo codec:rY   mpeg4)r-   r.   r   zAdditional options:r   znConsider adding '-sameq' or '-qscale 1' if not satisfied with video quality. Options depend on ffmpeg version.rQ  rZ  r[  i  zCurrent frame rate: %.2f fps)r   )/r1   r  r4   rs   rt   r1  ru   r   formatChoicer   r   r  rz   r   r{   r   r   AddStretchSpacerformatPanelSizerformatPanelsr   
prefixCtrlimSeqFormatChoicer?  DirBrowseButtonrA  rB  	dirBrowserx   r~   r   r   r  r@  FD_SAVE	gifBrowse	swfBrowsegcorefind_programr  RED	aviBrowseencodingTextoptionsTextr  r   r3  )rA   r   r  borderSizerhSizerr   	helpSizer
imSeqPanelprefixLabelformatLabel
imageTypesdirGridSizergifPanelgifGridSizerswfPanelswfGridSizeraviPanelr<  warningwarningLabelencodingLabeloptionsLabelaviGridSizerfpsSizerfpss   `                        rC   r  z%ExportDialog._createExportFormatPanel  sg   bii0kk"++.R]]+%&.(91U8QuXNIIUryy'R&&q)MMP	
 	

u!L/B))BFF2	 	 	
 	

4$$RVV9KTU
V1299rvv3EaPKK.	""1% "BKK 8d++		J	abii@ XXUryy9
 		>ARS":"))1\?S 		>ARSA
!#:z!J++A.#33yyo78{99;
 AA6&r7O7OPf299E&r7O7OP//V"))LV"))&Q##A&L)$!!1299rvv+=a 	" 	
 	  , 885RYY7#44yy-n9:{99;ZZ	
 AA6##A&V"))D,'"!!RVV);A 	" 	
 	  * 885RYY7#44yy-n9:{99;ZZ	
 AA6##A&V"))D,'"!!RVV);A 	" 	
 	  * 885RYY7##Hh7<G &XWEL,,RVV4#44yy-n9:{99;ZZ	
 #		>1B
 %H'R!;P9QR#84##4	
 AA6V&ryyQF9Q9QR**RYYG68P8PQ))vBIIF--		9	   	##A&,'"!!RVV);A 	" 	
 	  *;;r}}-T]]""))1-K+Ls+R  	 	
 	QRVVAF{#"rD   c                     t        | j                        D ]%  \  }}| j                  j                  |||k(         ' | j                  j	                          y )N)windowshow)r   rA  r@  ry  r   )rA   r   r   r  s       rC   r3  zExportDialog.ChangeFormat7  sQ    !$"3"34 	HHAu!!&&e1:&G	H$$&rD   c                 ^   | j                   j                         }|t        j                  k(  ry | j                   j	                  |      }|d   }t        j
                         }|j                  d       |j                  d       |j                  |       t        j                  | |      }|j                          |j                         t        j                  k(  rQ|j                         }|j                         }| j                  j!                  |       ||d<   | j#                          y y )NfontTblack)r  r   r1   r  r   FontDataEnableEffects	SetColourSetInitialFont
FontDialogr  r  r   GetFontDataGetChosenFontr  SetFontr   )rA   r   r   r   rg  fontdatar  newfontdatas           rC   r  zExportDialog.OnFont<  s    ))+BLL **51V};;=t$7#%mmD(+==?bhh&//+K,,.D$$T* E&MKKM 'rD   c                     | j                   j                         }|t        j                  k(  ry | j                   j	                  |      }|j                         |d   |dk(  <   y )Nrg   r*  )r  r   r1   r  r   GetInt)rA   r   coordr   r   s        rC   r&  zExportDialog.OnPositionR  sO    ))+BLL **51%*\\^eUc\"rD   c                     | j                   j                         }|t        j                  k(  ry | j                   j	                  |      }|j                         |d<   y )Nfiler  r   r1   r  r   	GetStringrA   r   r   r   s       rC   r  zExportDialog.OnSetImageZ  G    ))+BLL **51)frD   c                    |dk(  r2|| j                         ddgd}| j                  j                  |       n`|dk(  r$|dddgd}| j                  j                  |       n7|dk(  r2|| j                         dddgd}| j                  j                  |       | j                          | j                  j                  | j                  j                         d	z
         | j                  d 
       y )Nr  rY  )r
  rg  rg   r  r  )r
  rw  rg   r  )r
  rg  r  rg   rj   r   )GetFontr  r  r  r  r   GetCountr	  )rA   r   r
  timeInfo	imageInfotextInfos         rC   r  zExportDialog.OnAddDecorationb  s    6> $dllnb"XNH##H-W_!%r2r(CI##I.V^Bx	H ##H-!!$,,"7"7"9A"=>d+rD   c                    | j                   j                         }|t        j                  k(  r| j	                          y | j                   j                  |      }| j                  j                  | j                  |d   dv        | j                  j                  | j                  |d   dk(         | j                  j                  | j                  |d   dk(         | j                  j                  | j                  d       | j                  j                  | j                  d       | j                  j                  |d   d          | j                  j                  |d   d	          |d   dk(  r| j                   j                  |d
          nK|d   dv rD| j"                  j%                  |d          |d   dk(  r| j&                  j                  |d          | j                  j)                          y )Nr
  )r  r  r  r  TFrg   r   rj   rw  rg  )r  r   r1   r  r  r   r  ry  r  r  r  r  r  r+  r   r,  r  r  rp  r  r   rz  s       rC   r	  zExportDialog.OnSelectionChangedv  s   ))+BLL MMO**514<<%-;K*KM4==5=G+CE4<<%-6*AC4;;-4>>51

E%LO,

E%LO,=G#KK  v/6]..$$U6]3V}&&&uV}5rD   c                     | j                   j                         }|t        j                  k(  ry | j                   j	                  |      }|j                         |d<   y )Nr  rx  rz  s       rC   r  zExportDialog.OnText  r{  rD   c                 |   | j                   j                         }|t        j                  k(  ry | j                   j	                  |      }| j
                  j                  |       | j                          | j                   j                         r.| j                   j                  d       | j                  d        y y )Nr   r   )r  r   r1   r  r   r  r  r  r~  r   r	  )rA   r   r   decDatas       rC   r  zExportDialog.OnRemove  s    ))+BLL ,,,,U3(<<  "LL%%a(##$#/ #rD   c                    | j                   D ]h  }|d   dk(  st        j                  j                  |d         r/|d   rt	        | t        d      |d   z          y t	        | t        d              y  | j                  j                         dk(  rm| j                  j                         }t        j                  j                  |      s/|rt	        | t        d      |z         y t	        | t        d	             y | j                  j                         d
k(  r7| j                  | j                  | j                  j                         d      sy | j                  j                         dk(  r7| j                  | j                  | j                  j                         d      sUy | j                  j                         dk(  r7| j                  | j                  | j                  j                         d      sy | j                          | j                  j!                  | j#                         | j%                                y )Nr
  r  rw  zFile %s not found.r   z!Decoration image file is missing.r   zDirectory %s not found.zExport directory is missing.rj   z.gif)filebrowsebtn	file_pathfile_postfixrk   z.swfr   z.avi)
exportInfor  )r  rA  pathexistsr   ru   r>  r   rE  r   _export_file_validationrG  rH  rL  r   r  r   GetExportInformationGetDecorations)rA   r   decorr
  s       rC   r  zExportDialog.OnExport  s   %% 	EV}'ww~~eFm4V}#'3G1H5QW=1X  #'3V1W 	 ))+q0>>**,D77>>$'$2K0Lt0ST  $2P0QR++-2//"nn..113# 0 
 ++-2//"nn..113# 0 
 ++-2//"nn..113# 0 
  			002@S@S@U 	 	
rD   c                     | j                   S rF   )r  rL   s    rC   r  zExportDialog.GetDecorations  s    rD   c                    i }| j                   j                         dk(  r^d|d<   | j                  j                         |d<   | j                  j                         |d<   | j
                  j                         |d<   |S | j                   j                         dk(  r$d|d<   | j                  j                         |d	<   |S | j                   j                         d
k(  r$d|d<   | j                  j                         |d	<   |S | j                   j                         dk(  r\d|d<   | j                  j                         |d	<   | j                  j                         |d<   | j                  j                         |d<   |S )Nr   sequencemethod	directoryprefixformatrj   gifrw  rk   swfr   aviencodingoptions)r>  r   rE  r   rB  rC  r  rG  rH  rL  rM  rN  )rA   infos     rC   r  z!ExportDialog.GetExportInformation  s_   ))+q0'DN $ 7 7 9D!__557DN!33FFHDN   ++-2"DN>>224DL  ++-2"DN>>224DL  ++-2"DN>>224DL#0099;D"..779DOrD   c                     | j                   j                          t        d      t        d      t        d      d}| j                  D ]%  }| j                   j	                  ||d      |       ' y )Nz
Time stampImageTextr  r
  r  )r  r  ru   r  r   )rA   namesr  s      rC   r  zExportDialog._updateListBox  sa    <1W:qyQ%% 	HELLeFm 4G	HrD   c                    | j                   j                  | j                  d       | j                   j                  | j                  d       | j                   j                  | j                  d       | j                   j                  | j
                  d       | j                   j                  | j                  d       | j                   j                          y )NFT)r  ry  r  r  r  r  r  r   rL   s    rC   r  zExportDialog._hideAll  s    4<</4==%04<</4;;.4>>40rD   c                    t        d      }|st        | t        d             y|j                  |      s|j                  ||z          ||z  }t        j
                  j                  |      }t        j
                  j                  |      st        | |j                  |             yt        j
                  j                  |      rt        j                  | j                         t        dj                  |            t        d      t        j                  t        j                  z  t        j                  z  	      }|j                         t        j                   k(  s|j#                          y|j#                          y
)a  File validation before export

        :param obj filebrowsebutton: filebrowsebutton widget
        :param str file_path: exported file path
        :param str file_postfix: exported file postfix
        (.gif, .swf, .avi)

        :return bool: True if validation is ok
        z4Exported file directory '{base_dir}' does not exist.zExport file is missing.r   F)base_dirzEExported animation file <{file}> exists. Do you want to overwrite it?)rw  z
Overwrite?)r   r  r0   T)ru   r   endswithr   rA  r  dirnamer  r  r1   MessageDialog	GetParentYES_NOYES_DEFAULTICON_QUESTIONr  ID_YESr  )rA   r  r  r  $file_path_does_not_exist_err_messager  overwrite_dlgs          rC   r  z$ExportDialog._export_file_validation  s@    01E0
, $*C(DE%%l3&&y<'?@\)	wwy1H77>>(+@GG!) H  ww~~i( " 0 0NN$77=v!* 8> 8 lO))bnn4r7G7GG
! %..0BII=!))+ %%'rD   N)r   r   r   r3   r;   r  r  r  r  r  r3  r  r&  r  r  r	  r  r  r  r  r  r  r  r  r   rD   rC   r  r    st    $& D&*XKZ"Hqf'
,4*,(0*00
d 0H1rD   r  c                   J    e Zd ZdZeez  ez  ez  edfdZ	d Z
d Zd Zd	dZy)
r&  zeSimple layer manager for animation tool.
    Allows adding space-time dataset or series of maps.
    Tc                 F    t        j                  | |||||       d| _        y )NF)r#   r3   _3dActivated)rA   r-   r   	lmgrStyle
toolbarClsr!  s         rC   r3   zAnimSimpleLayerManager.__init__7  s)     	##&)Y
E	
 "rD   c                     t               }d|_        | j                  j                  |       | j	                  |       |j                          y)zQOpens dialog for specifying temporal dataset.
        Dummy layer is added first.TN)r    hiddenr%  AddLayerSetStdsPropertiesSkip)rA   r   r  s      rC   	OnAddStdsz AnimSimpleLayerManager.OnAddStdsG  s;       'u%

rD   c                    t        | || j                        }|j                  }|j                          |j	                         t
        j                  k(  rX|j                         }|r| j                  }n| j                  }|j                  | j                  j                  |      |       n|r| j                  j                  |       |j                          | j                          | j                   j                          y )N)r-   r  volume)r   r  )AddTemporalLayerDialogr  r  r  r  r1   r   GetLayer
layerAdded
cmdChangedr   r%  GetLayerIndexRemoveLayerr  r  	anyChange)rA   r  r  r  signals        rC   r  z(AnimSimpleLayerManager.SetStdsPropertiesP  s    $DdFWFWX==?bhh&LLNEKKdoo;;EB%KP++E2rD   c                     t        |d      sAt        | d| j                        j                  |j                  | j
                  |df       y| j                  |       y)z'Opens new module dialog or recycles it.r  N)r-   gifacer!  r  r  )r  r   _modalr  r  r  r  )rA   r  s     rC   _layerChangePropertiesz-AnimSimpleLayerManager._layerChangePropertiesc  sQ    uf%tD<IIII$//5")E J  ""5)rD   c                 P    | j                   j                  g d|        || _        y)z;Activates/deactivates certain tool depending on 2D/3D view.)	addRaster	addVectoropacityupdownN)_toolbarEnableToolsr  )rA   activates     rC   rx  z!AnimSimpleLayerManager.Activate3Dl  s%    !!?X	
 %rD   N)T)r   r   r   __doc__r$   r%   r&   r"   r!   r3   r  r  r  rx  r   rD   rC   r&  r&  2  sG     %

  )" &*%rD   r&  c                   f    e Zd ZdZd ed      fdZd Zd ZddZd	 Z	d
 Z
d Zd Zd Zd Zd Zy)r  z1Dialog for adding space-time dataset/ map series.FzAdd space-time dataset layerc           	      8    t         j                  j                   ||       | _        d  _        d  _        d  _        t         d       _        t        j                  ddd      }t        j                  j                  t        j                  |d      }t        j                  j!                  |      r6t        j                  j#                  |      rt        j$                  |	      }n=t         j&                  j)                  t         j*                  t         j,                  
      }t/         |       _         j0                  j3                  t         j4                   j6                         dt9        d      fdt9        d      fdt9        d      fdt9        d      fdt9        d      fdt9        d      fg}|s|d= |d= t;        |       _        t        j>                          _         |D ]"  \  }	}
 j@                  jC                  |
|	       $ tE         d       _#        tE         t         jH                         _%        tE         t         jL                         _'         jJ                  j3                  t         j4                   jP                          jF                  j3                  t         j4                   jR                          j@                  j3                  t         jT                   fd        j                  j3                  t         jV                   fd        j                  jX                  r& j[                   j                  jX                         n j[                  d        j                  j\                  r/ j                  j_                   j                  j\                          j                  j`                  r j                  j`                   _         jc                           je                   jg                                y ) N)r-   r/   strds)r-   rP  
appearance	iconThemerP  groupkeysubkeyzlayer-open.pngr
  )r.   client)bitmaprasterzMultiple raster mapsvectorzMultiple vector maps	raster_3dzMultiple 3D raster mapszSpace time raster datasetstvdszSpace time vector datasetstr3dszSpace time 3D raster datasetr[   rk   r   r  zSet propertiesrM  r4  c                 $    j                         S rF   )_setTyperU  s    rC   rW  z1AddTemporalLayerDialog.__init__.<locals>.<lambda>  s    T]]_ rD   c                 $    j                         S rF   )_datasetChangedrU  s    rC   rW  z1AddTemporalLayerDialog.__init__.<locals>.<lambda>  s    43G3G3I rD   )4r1   r2   r3   r  _mapType_name_cmdr   tselectr   GetrA  r  joinr   ICONDIRisfilegetsizeBitmapArtProvider	GetBitmapART_MISSING_IMAGEART_TOOLBARr   addManyMapsButtonr   r   
_onAddMapsru   dict_typesr   tchoicer   r   editBtnr   okBtnr   	cancelBtn_onOK_onPropertiesr  r  mapTyper  r
  r   r  r;   r  GetBestSize)rA   r-   r  r  r/   r  
bitmapPathr  typestype_r  s   `          rC   r3   zAddTemporalLayerDialog.__init__w  s    			4e<

	T8 $$<[QWX	WW\\)"3"3Y@PQ
77>>*%"''//**EYYJ/F^^--'' . F ".d6!B##BMM4??C q/01q/01!567a345a345q789
 aa5kyy-  	8KE4LL7	8 T1AB4BHH5
t=

tzz2"--););<"--)DE"++'IJ::MM$**,,-MM(#::??LL!!$**//2::>>

DIT%%'(rD   c                 v   t        j                  t         j                        }t        j                  t         j                        }t        j                  t         j                        }t        j                  t         j                        }|j	                  t        | t        d            t         j                         |j                          |j	                  | j                         |j	                  |t         j                  t         j                  z  d       |j	                  | j                  t         j                  t         j                  z  d       |j	                  | j                  t         j                         |j	                  |t         j                  d       |j	                  | j                  t         j                  d       |j	                  |dt         j                  t         j                   z  d       t        j"                         }|j%                  | j&                         |j%                  | j(                         |j+                          |j	                  |d	t         j                  t         j                   z  d       | j-                  |       |j/                  |        y )
NzInput data type:r  r  r[   )rh   rm   rj   rY  rn   r   )r1   rs   rt   r1  rz   r   ru   r{   r?  r  r   r  r  r  r  r  r   r   r   r  r  r   r   r   )rA   r   	bodySizer	typeSizerselectSizerbtnSizers         rC   r;   zAddTemporalLayerDialog._layout  s   KK,	KK,	KK.	kk"--0t1%7#89@X@X 	 	
 	""$dll#ibii"))&;AFLLrxx"*B*BB1 	 	
 	..RYY?k		!<dll1=iABII4FrR**,4::&4>>*h1299rvv3EbQi drD   c                     | j                   | j                  j                         k7  r'| j                  j                         | _         d | _        y y rF   )r  r  r   r  rL   s    rC   r  z&AddTemporalLayerDialog._datasetChanged  s;    ::..00..0DJDI 1rD   Nc                 x   |r| j                   j                  | j                  |          | j                  j	                  |       |dv r8| j                  j	                  |d       | j
                  j                          n7| j                  j	                  |d       | j
                  j                          || _        | j                  j                  d       y | j                   j                  | j                   j                               }|dv r8| j                  j	                  |d       | j
                  j                          n7| j                  j	                  |d       | j
                  j                          || j                  k7  r*d | _        || _        | j                  j                  d       y y )N)r  r  r  F)multipleTr  )r  rH  r  r  SetTyper  Disabler   r  r   r   r   r  )rA   typeNames     rC   r  zAddTemporalLayerDialog._setType  sS   LL++DKK,ABLL  *77$$X$>&&..0$$X$=&&--/$DMLL!!"%||11$,,2K2K2MNH77$$X$>&&..0$$X$=&&--/4==( 	 (%%b) )rD   c                    g }| j                   dv r|j                  d       n?| j                   dv r|j                  d       n| j                   dv r|j                  d       | j                  r| j                   dv r?|j                  dj                  | j                  j	                  d	      d
                |S 	 t        | j                  | j                         }|r2t        |d
         \  }}|j                  dj                  |             |S |S # t        j                  $ r!}t        | t        |      d       Y d }~y d }~ww xY w)N)r  r  zd.rast)r  r  zd.vect)r  r  zd.rast3d)r  r  r  z
map={name},r   r  )etypeFr  )r  r  r  r  splitr   r   rI  ScriptErrorr   rm  )rA   r  r  mapNamemapLayerr  s         rC   _createDefaultCommandz,AddTemporalLayerDialog._createDefaultCommand  s   ==//JJx ]]11JJx ]]55JJz"::}} AA

<..DJJ4D4DS4I!4L.MN 
 ,TZZt}}MD,;DG,D)

<#6#6G#6#DE 
s
 ((  $AeL s   <AD E	(EE	c                 V    t         t        d            }|j                  j                   fd        j                  dk(  rd}n j                  dk(  rd}nd}|j
                  j                  |       |j                  |j                  d	
      |j                  j                                |j                          |j                         t        j                  k(  r8 j                  j!                  dj#                  |j%                                      |j'                          y )NzSelect raster/vector maps.)r/   c                 X    j                   j                  dj                  |             S )Nr  )r  r   r  )	mapLayersrA   s    rC   rW  z3AddTemporalLayerDialog._onAddMaps.<locals>.<lambda>	  s    dll33CHHY4GH rD   r  r   r  rk   rj   T)r  r  )r	   ru   applyAddingMapLayersconnectr  	layerTyper   LoadMapLayersGetLayerTypemapsetr  r  r  r1   r   r  r   r  GetMapLayersr  )rA   r   r  r   s   `   rC   r  z!AddTemporalLayerDialog._onAddMaps  s    d!,H*IJ  ((H	
 ==H$E]]h&EE""5)#**t*4cjj6S6S6UV==?bhh&LL!!#((3+;+;+=">?rD   c                     | j                          | j                  r7t        | dd      j                  | j                  | j                  ddf       y y )NT)r-   re  r!  r  r  )_checkInputr  r   r  _getOptDatar   s     rC   r  z$AddTemporalLayerDialog._onProperties  sM    99t$d3@@II$*:*:B)C A  rD   c                     | j                   j                         st        | t        d             y | j                  s| j                         | _        y y )Nz$Please select maps or dataset first.r   )r  r   r   ru   r  r  rL   s    rC   r"  z"AddTemporalLayerDialog._checkInput!  sA    ||$$&D!,R*STyy224DI rD   c                     |r|| _         y y rF   )r  r  s        rC   r#  z"AddTemporalLayerDialog._getOptData)  s    DI rD   c                    | j                          | j                  rt	 d| j                  _        | j                  | j                  _        | j                  | j                  _        | j                  | j                  _        |j                          y y # t        t        j                  f$ r }t        | t        |             Y d }~y d }~ww xY w)NFr   )r"  r  r  r  r  r  r  r
  r  r  r   rI  r  r   rm  r  s      rC   r  zAddTemporalLayerDialog._onOK-  s    994$)

!%)]]

""&**

!%



   1 12 4dCF334s   A2B C+CCc                     | j                   S rF   )r  rL   s    rC   r  zAddTemporalLayerDialog.GetLayer9  s    zzrD   rF   )r   r   r   r  ru   r3   r;   r  r  r  r  r  r"  r#  r  r  r   rD   rC   r  r  t  sJ    ; %*3Q1R;)z<
*2,(5
4rD   r  c                   @    e Zd ZdZ ed      efdZd Zd Zd Z	d Z
y)	PreferencesDialogzAnimation preferences dialogzAnimation Tool settingsc                    t        j                  | ||||d       t        d      | _        g d| _        d | _        | j                  j                  ddd      | _        | j                  | j                         | j                  | j                         | j                  | j                                | j                  | j                         y )	N)rO  i  )r-   r  r/   settingsr8  zPreferencesDialog.formatChanged)
z%Y-%m-%d %H:%M:%Sz%Y-%m-%dz%cz%xz%Xz	%b %d, %Yz	%B %d, %Yz%B, %Yz%I:%M %pz%I %p	animationr  r  r  )r   r3   r'   formatChanged_timeFormats_formatr+  r  _initFormatr   r   _createTemporalPager(  r   r  r8  )rA   r-   r  r/   r+  s        rC   r3   zPreferencesDialog.__init__@  s     	&&	
 $$EF
 ==,,:h - 
 	.  /((*+TYYrD   c                 ~	   t        j                  |      }|j                  dd       |j                  |t	        d             t        j                  t
        j                        }t        j                  t
        j                        }t        j                  dd      }d	}|j                  t        |t	        d
            t
        j                  t
        j                  z  |d	f       t        j                  |t        j                   ddd      t"        j$                        }|j'                  d       |j)                         | j*                  d<   |j                  ||dft
        j,                         |dz  }|j                  t        |t	        d            t
        j                  t
        j                  z  |d	f       t        j                   ddd      dk(  r!t        j.                  dddt1                      t3        |t        j                   ddd            }|j'                  d       |j)                         | j*                  d<   |j                  ||dft
        j,                         |dz  }|j                  t        |t	        d            t
        j                  t
        j                  z  |d	f       t        j                  |t        j                   ddd       t"        j$                        }|j'                  d       |j)                         | j*                  d!<   |j                  ||dft
        j,                         |dz  }|j                  t        |t	        d"            t
        j                  t
        j                  z  |d	f       t        j                  |t        j                   ddd      t"        j$                        }|j'                  d       |j)                         | j*                  d#<   |j                  ||dft
        j,                         |j5                  d       |j                  |dt
        j6                  t
        j8                  z  d$       |j                  |d	t
        j6                  t
        j8                  z  d$       |j;                  |       |S )%z)Create notebook page for general settingsr   FTscroll_xscroll_yr   r  r   r\   r   zBackground color:rM  rh   rg   r,  bgcolorcolorr  )r-   colourr8  r  zanimation:bgcolor:colorrj   rf   zNumber of parallel processes:nprocsr   rO  )r  r  r  r   )r-   rd   r   zanimation:nprocs:valuezText foreground color:rg  fgcolorzanimation:font:fgcolorzText background color:zanimation:font:bgcolorrn   )SPScrolledPanelSetupScrollingr   ru   r1   rs   rt   rx   rz   r   r|   r{   cselColourSelectr   r  r   DIALOG_COLOR_SIZESetNameGetIdwinIdr  Setr   r   r~   r   r   r   )	rA   r   r  rm   r   r   rowr8  r:  s	            rC   r   z$PreferencesDialog._createGeneralPagee  s     1ed;e!I,7R[[)BKK(OO3	e1-@+AB!9!99a 	 	

 !!##+9WU,,

 	k"05

,-e#q?qe1-L+MN!9!99a 	 	
 +8GLPRR!x{}  $$;HWU
 	z"/5||~

+,f3(@qe1-E+FG!9!99a 	 	

 !!##+6)T,,

 	k"/4{{}

+,e#q?qe1-E+FG!9!99a 	 	

 !!##+6)T,,

 	k"/4{{}

+,e#q?  #		)0B1	M

5QRVVbii-?
JvrD   c                 r	    t        j                  |      }|j                  dd       |j                  |t	        d             t        j                  t
        j                        }t        j                  t
        j                        }t        j                  dd      }d	}|j                  t        |t	        d
            t
        j                  t
        j                  z  |d	f       t        |d       _         j                  j                   j                           j                  j#                   j$                          j                  j'                          j(                  d<   |j                   j                  |dft
        j*                         t        |       _         j                  j/                  t
        j0                   fd        j                  j/                  t
        j2                   fd        j                  j5                  t	        d             |dz  }|j                   j,                  |d	fdt
        j                  t
        j                  z          j7                   j                  j9                                |dz  }t;        |t
        j<                  t	        d      d      }|j?                  t
        j@                  jC                  t
        jD                               |jG                  t
        j@                  jC                  t
        jD                               |j                  ||d	fdt
        j                  t
        j                  z         |dz  }tI        |t	        d            }|j5                  t	        d             |j#                   jJ                  jM                  ddd d!g"             |j'                          j(                  d#<   |j                  ||d	fdt
        j                  t
        j                  z         |jO                  d       |j                  |dt
        jP                  t
        jR                  z  d$%       |j                  |d	t
        jP                  t
        jR                  z  d$%       |jU                  |       |S )&z*Create notebook page for temporal settingsr   FTr3  Timer  r[   r\   r   zAbsolute time format:rM  r6  r   )r-   r
  zanimation:temporal:formatrj   rf   c                 V    j                  j                  j                               S rF   _setTimeFormat
tempFormatr   rU  s    rC   rW  z7PreferencesDialog._createTemporalPage.<locals>.<lambda>  s    )<)<T__=U=U=W)X rD   c                 V    j                  j                  j                               S rF   rJ  rU  s    rC   rW  z7PreferencesDialog._createTemporalPage.<locals>.<lambda>  s    T%8%89Q9Q9S%T rD   zjClick and then press key up or down to preview different date and time formats. Type custom format string.rr   rQ  z#Learn more about formatting optionszMhttp://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior)r.   rZ   urlrk   zDisplay instances with no datar  zWhen animating instant-based data which have irregular timestamps you can display 'no data frame' (checked option) or keep last frame.r,  r  nodataenabler  z animation:temporal:nodata:enabler   rn   )+r<  r=  r>  r   ru   r1   rs   rt   rx   rz   r   r|   r{   r   rL  SetItemsr.  r   r0  rC  rD  r  infoTimeLabelr   EVT_COMBOBOXr  r  rK  r   r   r4   SetNormalColourr  r  r  SetVisitedColourr   r+  r  r~   r   r   r   )	rA   r   r  rm   r   r   rF  linknoDataChecks	   `        rC   r1  z%PreferencesDialog._createTemporalPage  s     1ed;e!F)4R[[)BKK(OO3	e1-D+EF!9!99a 	 	

 #%jA  !2!23  !1!1226//2G2G2I

./dooC8"..I'u5OOX	
 	KKT	
 	""-	
 	qa))BMM9	 	 	
 	DOO4467qyy9:-	
 	R..889O9OPQb//99":P:PQRa))BMM9	 	 	
 	quA.N,OP#	
 	MM!z8X:N  	

 :E9J9J9L

56a))BMM9	 	 	
 	  #		)0B1	M

5QRVVbii-?
JvrD   c                 J   t         j                   j                         }	 t         j                   j                  ||      }|| _        | j                  j                  |       | j                  j                         j                          y # t        $ r t        d      }Y Zw xY w)NInvalid)
r   nowstrftimer/  r  ru   rR  r  rz  r   )rA   formatStringrZ  rZ   s       rC   rK  z PreferencesDialog._setTimeFormat  s    ##%	!%%..sLAE'DL 	##E*--/668  	!iLE	!s   'B B"!B"c                     | j                   j                  | j                         t        j                  |        | j                  | j
                  k7  r| j                  j                          y)NT)rL  r   r/  r   _updateSettingsr0  r-  r   rL   s    rC   r^  z!PreferencesDialog._updateSettings  sM      .--d3<<4+++##%rD   N)r   r   r   r  ru   r   r3   r   r1  rK  r^  r   rD   rC   r)  r)  =  s0    & %&&?$@<# JTlXt9rD   r)  c                  b    dd l }  | j                         }t                |j                          y )Nr   )wx.lib.inspectionApptestAnimInputMainLoop)r1   apps     rC   testre  '  s$    
"&&(C O LLNrD   c                  z    t               } | j                  dd       t        d d|       }|j                          y )Nr   r  r	  r   r  )r   r  r   ry  r  r  s     rC   rb  rb  4  s3    ?D:
TT
BCHHJrD   c                  z    t               } | j                  dd       t        d | g      }|j                          y )Nr   rg  )r-   r   )r   r  r  ry  rh  s     rC   testAnimEditrj  <  s3    ?D:
D
7CHHJrD   c                  $   t        d t        j                  d      } | j                         t        j
                  k(  rCt        | j                                t        | j                                | j                          y | j                          y )Nr*   )r-   r  r   )
r  r   r   r  r1   r   printr  r  r  )r  s    rC   
testExportrm  D  s\    
d\-B-BS
QC
}}"(("c  "#c&&()rD   c                  v   t        j                  d       } | j                          t               }t	        | |      }|j                         t         j                  k(  rL|j                         }t        |j                  |j                  |j                         |j                          y |j                          y )N)r-   r  )r1   Framery  r    r  r  r   r  rl  r
  r  r  r  )framer  r  s      rC   testTemporalLayerrq  N  sr    HHTNE	JJLKE
 U
;C
}}"(("ejj%))U]]3rD   c                      ddl m}  t        j                  d       }t	        | |              }||_        |j                          y )Nr   )	LayerList)r-   r   )core.layerlistrs  r1   ro  r&  mgrry  )rs  rp  ru  s      rC   testAnimLmgrrv  [  s0    (HHTNE
 
ECEI	JJLrD   __main__T)Xr  
__future__r   rA  r1   r#  r   wx.lib.filebrowsebuttonlibfilebrowsebuttonr?  wx.lib.scrolledpanelscrolledpanelr<  wx.lib.colourselectcolourselectr?  wx.advr   ImportError	core.gcmdr   r   r   corer   gui_core.dialogsr	   r
   gui_core.preferencesr   gui_core.formsr   core.settingsr   gui_core.gselectr   gui_core.widgetsr   gui_core.wrapr   r   r   r   r   r   r   r   r   r   r   animation.utilsr   r   r   r   animation.datar   r    animation.toolbarsr!   r"   gui_core.simplelmgrr#   r$   r%   r&   grass.pydispatch.signalr'   grass.script.corescriptrI  r2   r)   r   r  r  r&  r  r)  re  rb  rj  rm  rq  rv  r   set_raise_on_errorr   rD   rC   <module>r     sg  , & 	 	   , , ! ! " "!$ 3 2  > 6  & # +     4 F  + ! !B6")) B6J_T")) _TDe  e PQ
299 Q
h?%/ ?%DFRYY FRg- gT

 zET"F CB  !  !s   E3 3FF