
    ը	f.                        d 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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 dd
lmZmZmZmZ ddlmZmZm Z m!Z!m"Z"m#Z# ddl$m%Z%  G d dejL                        Z' G d de      Z(y)a?  
@package mapswipe.dialogs

@brief Dialogs used in Map Swipe

Classes:
 - dialogs::SwipeMapDialog

(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>
    N)	globalvar)gselect)SimpleValidator)PreferencesBaseDialog)GMessage)	LayerList)UserSettings)SpinCtrlButton
StaticText	StaticBox)SimpleLayerManagerSIMPLE_LMGR_RASTERSIMPLE_LMGR_VECTORSIMPLE_LMGR_RGBSIMPLE_LMGR_TB_LEFTSIMPLE_LMGR_TB_RIGHT)Signalc                   |    e Zd ZdZ ed      ddddf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)SwipeMapDialogzrDialog used to select maps.

    There are two modes - simple (only two raster maps),
    or two layer lists.
    zSelect raster mapsNc                     t         j                  j                   ||t         j                  t         j                  z         |t                _        nt        j                  |       _        |t                _	        nt        j                  |       _	         j                          _         j                          _        t                _        t         t         j                          _        t         t         j$                         _        t         t         j(                         _         j*                  j-                           j                  j/                  t         j0                   j2                          j&                  j/                  t         j0                   fd        j*                  j/                  t         j0                   fd        j"                  j/                  t         j0                   fd        j/                  t         j4                   fd       t7        d       _        |r j:                  j=                  |       |r j>                  j=                  |        jA                          y )N)parenttitlestyle)idc                 $    j                         S N)_applyevtselfs    1/usr/lib/grass83/gui/wxpython/mapswipe/dialogs.py<lambda>z)SwipeMapDialog.__init__.<locals>.<lambda>T   s    dkkm     c                 $    j                         S r   )_okr   s    r"   r#   z)SwipeMapDialog.__init__.<locals>.<lambda>U   s    488: r$   c                 $    j                         S r   )Closer   s    r"   r#   z)SwipeMapDialog.__init__.<locals>.<lambda>V   s    tzz| r$   c                 $    j                         S r   )Hider   s    r"   r#   z)SwipeMapDialog.__init__.<locals>.<lambda>W   s    DIIK r$   zSwipeMapDialog.applyChanges)!wxDialog__init__RESIZE_BORDERDEFAULT_DIALOG_STYLEr   _firstLayerListcopydeepcopy_secondLayerList_createSimplePanel_firstPanel_createAdvancedPanel_secondPanelr   	btnSwitch	ID_CANCEL	btnCancelID_APPLYbtnApplyID_OKbtnOK
SetDefaultBind
EVT_BUTTONOnSwitchMode	EVT_CLOSEr   applyChanges_firstRasterSetValue_secondRaster_layout)r!   r   r   firstsecondfirstLayerListsecondLayerLists   `      r"   r-   zSwipeMapDialog.__init__1   s    			""R%<%<<	 	 	
 !#,;D #'==#@D "$-KD!$(MM/$BD!224 5576t4DRXX.


BMM4+<+<=2==*CD

'=>BMM+CD		",, 78"#@A&&u-''/r$   c                 l    | j                   j                          | j                  j                          y r   )
_firstLmgrUnInit_secondLmgrr!   s    r"   rO   zSwipeMapDialog.UnInitb   s$     !r$   c                    t        j                  t         j                        }t        j                         | _        | j                  j	                  | j
                  dt         j                  t         j                  z  d       | j                  j	                  | j                  dt         j                  t         j                  z  d       |j	                  | j                  dt         j                  t         j                  z         t        j                         | _
        | j                  j                  | j                         | j                  j                  | j                         | j                  j                  | j                         | j                  j                          |j	                  | j                   dt         j                  t         j"                  z  d       |j	                  | j                  dt         j                  t         j                  z  d       || _        | j'                  d       | j)                  |       |j+                  |        y)	z	Do layout      
proportionflagborder)rV   rW   r   TsimpleN)r+   BoxSizerVERTICAL_switchSizerAddr5   EXPANDALLr7   StdDialogButtonSizerbtnSizer	AddButtonr:   r>   r<   Realizer8   
ALIGN_LEFT	mainSizer_switchModeSetSizerFit)r!   rf   s     r"   rH   zSwipeMapDialog._layoutf   s   KK,	KKMRVV1CA 	 	
 	!"))bff2DQ 	 	
 	d''ABII<NO//1/

+.NNqrvv/Ea 	 	
 	dmm		BFF8JSTU"%i dr$   c                    t        j                  |       }t        j                  t         j                        }t	        j
                  |dt        j                  t        | j                              | _
        t	        j
                  |dt        j                  t        | j                              | _        |j                  t        |t        d            dt         j                  t         j                   z  d       |j                  | j                  dt         j                  t         j                   z  d	       |j                  t        |t        d
            dt         j                  t         j                   z  d	       |j                  | j                  dt         j                  t         j                   z  d	       | j                  j#                          |j%                  |       |j'                  |       |S )Nraster)callback)r   typesize	validatorzName of top/left raster map:)labelr   rT   rU   rS   z Name of bottom/right raster map:)r+   Panelr[   r\   r   Selectr   DIALOG_GSELECT_SIZEr   ValidatorCallbackrE   rG   r^   r   _r_   r`   SetFocusrh   ri   r!   panelsizers      r"   r4   z!SwipeMapDialog._createSimplePanel   sr   BKK(#NN..%t/E/EF	
 %^^..%t/E/EF	
 			uA&D$EFRVV#	 	 	
 			$##		BFF8JST	U		uA&H$IJRVV#	 	 	
 			$$$RVV9KTU	V""$u		%r$   c                    t        j                  |       }t        j                  t         j                        }t	        || j
                  t        t        z  t        z  t        z        | _
        t	        || j                  t        t        z  t        z  t        z        | _        |j                  | j                  dt         j                  t         j                   z  d       |j                  | j                  dt         j                  t         j                   z  d       |j#                  |       |j%                  |       |S )N)r   	layerList	lmgrStylerS   rT   rU   )r+   rq   r[   
HORIZONTALr   r0   r   r   r   r   rN   r3   r   rP   r^   r_   r`   rh   ri   rw   s      r"   r6   z#SwipeMapDialog._createAdvancedPanel   s    BMM*,**( ! ""
 .++( ! ##
 			$//abii"&&6HQR	S		$""qryy2667IRS	Tu		%r$   c                    |r| j                   j                  | j                  dd       | j                   j                  | j                  dd       | j                  j                  t        d             | j                  j                  t        d             n| j                   j                  | j                  dd       | j                   j                  | j                  dd       | j                  j                  t        d             | j                  j                  t        d             | j                          | j                  j                  | j                  |       | j                  j                  | j                  |       | j                  j                          | j                   j                          | j                          | j                          | j                  j!                          y )NT)show	recursiveFzSwitch to advanced modeCancelzSwitch to simple moder(   )r]   Showr5   r7   r8   SetLabelru   r:   Freezerb   r<   r>   Layoutri   ThawrD   emit)r!   rZ   s     r"   rg   zSwipeMapDialog._switchMode   sd   ""4#3#3$$"O""4#4#45D"QNN##A&?$@ANN##AhK0""4#3#3%4"P""4#4#444"PNN##A&=$>?NN##AgJ/4==&14::v.  "
		 r$   c                     | j                   j                  | j                        r| j                  d       y | j                  d       y )NTrY   F)r]   IsShownr7   rg   )r!   events     r"   rB   zSwipeMapDialog.OnSwitchMode   s>    $$T%6%67D)E*r$   c                     | j                   j                  | j                        ry || j                  j	                         k(  rt        | t        d             y t        | t        d             y )Nz!Name of the first map is missing.)r   messagez"Name of the second map is missing.)r]   r   r7   rE   GetTextCtrlr   ru   )r!   wins     r"   rt   z SwipeMapDialog.ValidatorCallback   sV    $$T%6%67$##//11D!,O*PQD!,P*QRr$   c                 D    | j                          | j                          y r   )r   r(   rQ   s    r"   r&   zSwipeMapDialog._ok   s    

r$   c                 8    | j                   j                          y r   )rD   r   rQ   s    r"   r   zSwipeMapDialog._apply   s     r$   c                     | j                         r4| j                  j                         | j                  j                         fS | j                  | j
                  fS )zGet raster maps)IsSimpleModerE   GetValuerG   r0   r3   rQ   s    r"   	GetValueszSwipeMapDialog.GetValues   sN    %%..0$2D2D2M2M2OPP(($*?*?@@r$   c                 P    | j                   j                  | j                        ryy)NTF)r]   r   r5   rQ   s    r"   r   zSwipeMapDialog.IsSimpleMode   s"    $$T%5%56r$   c                     | j                   S r   )rN   rQ   s    r"   GetFirstSimpleLmgrz!SwipeMapDialog.GetFirstSimpleLmgr   s    r$   c                     | j                   S r   )rP   rQ   s    r"   GetSecondSimpleLmgrz"SwipeMapDialog.GetSecondSimpleLmgr   s    r$   )__name__
__module____qualname____doc__ru   r-   rO   rH   r4   r6   rg   rB   rt   r&   r   r   r   r   r    r$   r"   r   r   *   sh     $%/b"6%N6!,+S!A
 r$   r   c                   .    e Zd ZdZ ed      efdZd Zy)PreferencesDialogzMapswipe preferences dialogzMap Swipe settingsc                     t        j                  | ||||d       | j                  | j                         | j	                  | j                                | j                  | j                         y )N)i,  )r   gifacer   settingsrn   )r   r-   _createMirrorModePagenotebook
SetMinSizeGetBestSizeSetSizern   )r!   r   r   r   r   s        r"   r-   zPreferencesDialog.__init__  s]     	&&	
 	""4==1((*+TYYr$   c           
      	   t        j                  |      }|j                  dd       |j                  |t	        d             t        j                  t
        j                        }t        |dt	        d      z  	      }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
        j0                         |dz  }|j                  t        |t	        d      	      t
        j                  t
        j                  z  |df       t        j2                  || j4                  j%                  ddddgd      d      }	|	j7                  | j4                  j%                  ddddg             |	j-                         | j.                  d <   |j                  |	t
        j0                  t
        j                  z  t
        j8                  z  |df       |dz  }|j                  t        |t	        d!      	      t
        j                  t
        j                  z  |df       t;        |dd"| j4                  j%                  ddd#      d$%      }
|
j-                         | j.                  d&<   |j                  |
t
        j0                  t
        j                  z  t
        j8                  z  |df       |dz  }|j                  t        |t	        d'      	      t
        j                  t
        j                  z  |df       t;        |d(d)| j4                  j%                  ddd*      d$%      }|j-                         | j.                  d+<   |j                  |t
        j0                  t
        j                  z  t
        j8                  z  |df       |j=                  d       |j                  |dt
        j>                  t
        j8                  z  d
,       |j                  |dt
        j>                  t
        j8                  z  d
,       |jA                  |       |S )-z)Create notebook page for general settings)r   FT)scroll_xscroll_yzMirror mode)pagetextz %s zMirrored cursor)r   rp      )hgapvgapr   zColor:)rW   posmapswipecursorcolor)groupkeysubkey)r   colourrn   	GetColourzmapswipe:cursor:colorrS   )r   rW   zShape:rm   choicesinternal)r   r   r   settings_typeGetSelection)r   r   name	selectionzmapswipe:cursor:type:selectionzLine width:
   widthr   )r   minmaxinitialr   zmapswipe:cursor:widthzSize:   2   rn   zmapswipe:cursor:sizerU   )!SPScrolledPanelSetupScrollingAddPageru   r+   r[   r\   r   StaticBoxSizerGridBagSizerr^   r   re   ALIGN_CENTER_VERTICALcselColourSelectr	   Getr   DIALOG_COLOR_SIZESetNameGetIdwinIdALIGN_RIGHTChoicer   SetSelectionr_   r
   AddGrowableColr`   rh   )r!   r   rx   rX   boxry   	gridSizerrowr   cursorsr   rn   s               r"   r   z'PreferencesDialog._createMirrorModePage  s     1ed;e!M*:;R[[)uFQ7H5I,IJ!!#r{{3OO3	e1X;7!9!99a 	 	

 !!##*(7S,,

 	k".3kkm

*+e#q?qe1X;7!9!99a 	 	

 ))MM%% 	*(	 &   	
 	MM h7L  	

 8?}}

34"":"::RYYFa 	 	
 	qe1]+;<!9!99a 	 	

 MM%%JHW%U
 /4kkm

*+"":"::RYYFa 	 	
 	qe1W:6!9!99a 	 	

 MM%%JHV%T
 .2ZZ\

)*"":"::RYYFa 	 	
 	  #		)0B1	M

5QRVVbii-?
Jvr$   N)r   r   r   r   ru   r	   r-   r   r   r$   r"   r   r     s    % %&&:$;l $gr$   r   ))r   r1   r+   wx.lib.scrolledpanellibscrolledpanelr   wx.lib.colourselectcolourselectr   corer   gui_corer   gui_core.widgetsr   gui_core.preferencesr   	core.gcmdr   core.layerlistr   core.settingsr	   gui_core.wrapr
   r   r   r   gui_core.simplelmgrr   r   r   r   r   r   grass.pydispatch.signalr   r,   r   r   r   r$   r"   <module>r      sj      	 ! ! " "   , 6  $ & A A  +V RYY V r|- |r$   