
    ը	f/                        d Z ddlZddlmZmZ ddlmZ ddlmZ ddl	m
Z
  e
d ed       ed	      
       e
d ed       ed      
       e
d ed             e
d ed             e
d ed             e
d ed             e
d ed       ed      
       e
d ed             e
d ed             e
d ed             e
d ed             e
d  ed!             e
d" ed#             e
d$ ed%            d&Z e
d' ed(       ed)      
       e
d* ed+       ed,      
      ed-   j                   ed.      /      ed0   j                   ed1      /      d2Z G d3 d4e      Zy)5aq  
@package mapdisp.toolbars

@brief Map display frame - toolbars

Classes:
 - toolbars::MapToolbar

(C) 2007-2015 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 Michael Barton
@author Jachym Cepicky
@author Martin Landa <landa.martin gmail.com>
    N)BaseToolbar	BaseIcons)haveNviz)
haveVDigit)MetaIconinfozQuery raster/vector map(s)z#Query selected raster/vector map(s))imglabeldescselectzSelect vector feature(s)z-Select features interactively from vector mapzscalebar-addzAdd scale bar)r	   r
   z
legend-addzAdd raster legendzAdd vector legendznorth-arrow-addzAdd north arrowzlayer-raster-analyzezAnalyze mapz(Measuring, profiling, histogramming, ...zmeasure-lengthzMeasure distancezarea-measurezMeasure areazlayer-raster-profilezProfile surface mapz+Create bivariate scatterplot of raster mapsztext-addzAdd textzlayer-raster-histogramzCreate histogram of raster mapzvector-toolszVector network analysis tool)queryr   addBarscaleaddRasterLegendaddVectorLegendaddNorthArrowanalyzemeasureDistancemeasureAreaprofilescatteraddText	histogramvnetz	3d-rotatezRotate 3D scenez"Drag with mouse to rotate 3D scene
flythroughzFly-through modezIDrag with mouse, hold Ctrl down for different mode or Shift to acceleratezoomInzClick mouse to zoom)r   zoomOutzClick mouse to unzoom)rotate
flyThroughr   r   c                   L    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y)
MapToolbarzMap Display toolbarc                    t        j                  | ||       | j                  | j                                | j                  | _        || _        d}t        d      g}d|i| _        |dz  }t        r/|j                  t        d             || j                  d<   |dz  }niddlm} | j                  j                  t        d	             | j                  j                  t        d
      t        |      z         d| j                  d<   t         r/|j                  t        d             || j                  d<   |dz  }nddlm} | j                  j                  t        d             | j                  j                  t        d
      |z         | j                  j%                  t        d      d       d| j                  d<   |j                  t        d             || j                  d<   t'        j(                  | t&        j*                  |t&        j,                  d      | _        | j.                  j1                  d       | j3                  | j.                        | _        | j6                  j9                  t&        j:                  | j<                  | j4                         | j?                          | j.                  jA                          | j.                  jC                          | j                  | jD                  | jF                  | jH                  | jJ                  | jL                  fD ]   }| jN                  jQ                  d| |       " | jS                  | jT                  d       | jW                  d       y)zNMap Display constructor

        :param parent: reference to MapFrame
        )parenttoolSwitcherr   2D view2d   z3D view3d)errorMsgz3D view mode not availablez
Reason: %szVector digitizervdigitzVector digitizer not availablezNote that the wxGUI's vector digitizer is disabled in this installation. Please keep an eye out for updated versions of GRASS. In the meantime you can use "v.edit" for non-interactive editing from the Develop vector map menu.<   )wrapzRaster digitizerrdigit)n   r)   )r"   idchoicesstylesizemouseUse)grouptoolbartoolFZ   )widthN),r   __init__InitToolbar_toolbarDatapointer_default_giface_toolIdr   append	nviz.mainr(   WriteCmdLogWriteWarningstrr   vdigit.mainWriteLogwxComboBoxID_ANYCB_READONLYcomboSetSelection
AddControlcomboidr"   BindEVT_COMBOBOXOnSelectToolRealizeHideShowr   r   panr   r   r#   AddToolToGroup
EnableToolzoomBackFixSize)selfr"   r#   gifacetoolNumr0   r(   r6   s           1/usr/lib/grass83/gui/wxpython/mapdisp/toolbars.pyr9   zMapToolbar.__init__R   s   
 	T&|L**,- iL
 Wo1NN1Y<( 'DKKqLG*LL$$Q'C%DELL%%aoH&EF "DKKNN1/01$+DKK!qLG,LL$$Q'G%HILL%%ao&@ALL!!8  "  %'DKK!q+,- 'H[[yy..

 	

"tzz2$*;*;T\\J 	 	



 LLKKJJHHKKLL
 	XD ,,:tRV,W	X 	u-2    c                    | j                  dt        d   j                  ft        d   | j                  j                  fdt        d   j                  ft        d   | j                  j
                  t        j                  fdt        d   j                  ft        d   | j                  j                  t        j                  fdt        d   j                  ft        d   | j                  j                  t        j                  fdt        d   j                  ft        d   | j                  j                  t        j                  fdt        d   j                  ft        d   | j                  j                  t        j                  fdt        d   j                  ft        d   | j                  j                  t        j                  fd	t        d	   j                  ft        d	   | j                  j                  fd
t        d
   j                  ft        d
   | j                  j                  fdt        d   j                  ft        d   | j                  j                   fdt        d   j                  ft        d   | j                  j"                  fdt        d   j                  ft        d   | j$                  fdt        d   j                  ft        d   | j&                  fdt        d   j                  ft        d   | j                  j(                  fdt        d   j                  ft        d   | j                  j*                  ff      S )zToolbar data	renderMaprenderr<   r   r   rV   r   r   
zoomExtent
zoomRegionrY   zoomMenur   overlaysaveFilemapDispSettings)_getToolbarDatar   r
   r"   OnRender	OnPointerrH   
ITEM_CHECKMapIconsOnSelectOnQueryOnPanOnZoomIn	OnZoomOutOnZoomToMapOnZoomToWind
OnZoomBack
OnZoomMenu	OnAnalyzeOnDecoration
SaveToFileOnMapDisplayPropertiesr[   s    r^   r;   zMapToolbar._toolbarData   s   ## !)H"5";";<h'KK(( 	) 4 : :;i(KK))MM	 x1778X&KK((MM	 hw/556W%KK''MM	 Ie,223e$KK%%MM	 y2889h'KK((MM	 	) 4 : :;i(KK))MM	 "9\#:#@#@Al+KK++ "9\#:#@#@Al+KK,,  :!6!<!<=j)KK**  :!6!<!<=j)KK**  3 9 9:Y'NN 	) 4 : :;i(%%  :!6!<!<=j)KK** '	2C(D(J(JK/0KK66[RT
 T	
r_   c                 >   | j                  |      }|D ]  } | j                  |   | j                          | j                  j                  j                  d      j                  | j                                | j                  j                  j                          y)z9Insert tool to toolbar

        :param data: toolbar data
mapToolbarN)	ri   
CreateToolrS   r"   _mgrGetPaneBestSizeGetBestSizeUpdate)r[   datar6   s      r^   
InsertToolzMapToolbar.InsertTool   s|     ##D) 	#DDOOT"	#  .778H8H8JK!r_   c                     | j                  |       | j                  j                  j                  d      j	                  | j                                | j                  j                  j                          y)z6Remove tool from toolbar

        :param tool: tool idr}   N)
DeleteToolr"   r   r   r   r   r   )r[   r6   s     r^   
RemoveToolzMapToolbar.RemoveTool  sR     	  .778H8H8JK!r_   c                    |rt         }nt        }t        | j                  j                        D ]X  \  }}dD ]N  }|d   |k(  st        |      }||   j                         |d<   t        |      | j                  j                  |<   P Z y)z/Change description of zoom tools for 2D/3D view)r   r   r      N)r   	NvizIcons	enumerate
controllerr   listGetDesctuple)r[   mode2diconsir   r6   tmps          r^   ChangeToolsDesczMapToolbar.ChangeToolsDesc  s    EE !5!56 	9GAt- 97d?t*C"4[002CF.3CjDOO((+	9	9r_   c                    |j                         }|| j                  d   k(  rF| j                          | j                  d       | j                  j
                  j                          y|| j                  d   k(  r| j                  j                  r| j                  j                  d      sP| j                          | j                  j                  d       | j                  j
                  j                          y|| j                  d   k(  rk| j                  j                  d      sP| j                          | j                  j                  d       | j                  j
                  j                          y|| j                  d   k(  rP| j                          | j                  j                  d       | j                  j
                  j                          yy)z,Select / enable tool available in tools listr%   Tr'   nvizr*   r-   N)GetSelectionr@   ExitToolbarsEnable2Dr"   	MapWindowSetFocusMapWindow3DIsPaneShown
AddToolbar
GetToolbar)r[   eventr6   s      r^   rR   zMapToolbar.OnSelectTool"  sR   !!#4;;t$$MM$KK!!**,T[[&&KK##(?(?(EKK""6*KK!!**,T[[**4;;3I3I(3SKK""8,KK!!**,T[[**KK""8,KK!!**, +r_   c           
         | j                  t        d   | j                  j                  ft        d   | j                  j                  ft        d   | j                  j
                  ft        d   | j                  j                  ft        d   | j                  j                  ft        d   | j                  j                  ft        d   | j                  j                  ff       y)zAnalysis tools menur   r   r   r   r   r   N)_onMenurm   r"   OnMeasureDistanceOnMeasureArea	OnProfileOnScatterplotOnHistogramPyPlotr   OnHistogramOnVNetr[   r   s     r^   rw   zMapToolbar.OnAnalyze<  s    +,dkk.K.KL-($++*C*CD)$dkk&;&;<)$dkk&?&?@+&(E(EF;')@)@A&!4;;#5#56
	
r_   c           	            j                  t        d    fdft        d    fdft        d    fdft        d    fdft        d	    fd
ff       y)zDecorations overlay menur   c                 8    j                   j                         S N)r"   AddLegendRastevtr[   s    r^   <lambda>z)MapToolbar.OnDecoration.<locals>.<lambda>N      $++:S:S:U r_   r   c                 8    j                   j                         S r   )r"   AddLegendVectr   s    r^   r   z)MapToolbar.OnDecoration.<locals>.<lambda>O  r   r_   r   c                 8    j                   j                         S r   )r"   AddBarscaler   s    r^   r   z)MapToolbar.OnDecoration.<locals>.<lambda>P  s    dkk6M6M6O r_   r   c                 8    j                   j                         S r   )r"   AddArrowr   s    r^   r   z)MapToolbar.OnDecoration.<locals>.<lambda>Q  s    8L8L8N r_   r   c                 8    j                   j                         S r   )r"   AddDtextr   s    r^   r   z)MapToolbar.OnDecoration.<locals>.<lambda>R  s    $++2F2F2H r_   N)r   rm   r   s   ` r^   rx   zMapToolbar.OnDecorationJ  s\    +,.UV+,.UV-(*OP/*,NO)$&HI	
r_   c                 (   | j                   j                  d      r'| j                   j                  d   j                          | j                   j	                          | j                   j                  d      r| j                   j                          y y )Nr*   r-   )r"   r   toolbarsOnExit
RemoveNviz
QuitRDigitr{   s    r^   r   zMapToolbar.ExitToolbarsV  sf    ;;!!(+KK  *113 ;;!!(+KK""$ ,r_   c                     | j                   | j                  | j                  | j                  fD ]  }| j	                  ||        | j                  |       |r%| j                  j                  t        d             yy)z-Enable/Disable 2D display mode specific toolsr$   N)	rd   re   r   r   rX   r   rL   SetValuer?   )r[   enabledr6   s      r^   r   zMapToolbar.Enable2D]  sd    __dmmT\\4;;O 	+DOOD'*	+W%JJ)- r_   N)__name__
__module____qualname____doc__r9   r;   r   r   r   rR   rw   rx   r   r    r_   r^   r    r    O   s;    TlV
p
""9-4


%.r_   r    )r   rH   gui_core.toolbarsr   r   rB   r   rF   r   
icons.iconr   r?   rm   SetLabelr   r    r   r_   r^   <module>r      s  $ 
 4  "  ,-45
 *+>?
 a6HIL:M8NOL:M8NO"31=N;OP"9:
  $4A>P<QRa6GH2!<Q:RS"=> Ja
m<$A.N,O q1O/PQ? F !"34
 "#&
 !**2G0H*I#,,!4K2L,M	&T. T.r_   