
    ը	f                        d Z ddlZddl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mZmZ ddlmZ  G d	 d
ej0                        Z G d dej0                        Z G d dej6                        Z G d dej0                        Z G d dej0                        Z G d dej0                        Zy)a  
@package wxplot.dialogs

@brief Dialogs for different plotting routines

Classes:
 - dialogs::ProfileRasterDialog
 - dialogs::ScatterRasterDialog
 - dialogs::PlotStatsFrame
 - dialogs::HistRasterDialog
 - dialogs::TextDialog
 - dialogs::OptDialog

(C) 2011-2016 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, Arizona State University
    N)	globalvar)UserSettings)ICONDIR)Select)
ColourSelectComboBoxButtonCheckBoxChoiceScrolledPanelSpinCtrl	StaticBox
StaticTextTextCtrl)corec                   Z    e Zd Zej                   ed      ej                  fdZd Zd Z	y)ProfileRasterDialogzSelect raster maps to profilec                     t        j                  j                  | |||fd|i| || _        g d| _        | j                  j
                  | _        | j                          y)(Dialog to select raster maps to profile.styleblueredgreenyellowmagentacyanaquablackgreyorangebrownpurplevioletindigoN)wxDialog__init__parent	colorList
rasterList
_do_layoutselfr)   idtitler   kwargss         //usr/lib/grass83/gui/wxpython/wxplot/dialogs.pyr(   zProfileRasterDialog.__init__/   sS     			4UJ%J6J
" ++00    c                 P   t        j                  t         j                        }t        j                  dd      }d}| j                  D ]
  }|d|z  z  } |j                  d      }t        d      }t        | t         j                  |      }|j                  |t         j                  d	       t        | t         j                  t        j                  d
d      }|j                  |       |j                  t         j                   | j"                         |j                  |d       |j                  |dt         j$                  d       t        j&                  | t         j                  dt         j(                        }|j                  |dt         j*                  t         j,                  z  t         j.                  z  d       t        j0                         }	t3        | t         j4                        }
|
j7                          |	j9                  |
       t3        | t         j:                        }
|	j9                  |
       |	j=                          |j                  |	dt         j>                  t         j$                  z  d       | jA                  |       |jC                  |        y )N   hgapvgap %s,,z Select raster map(s) to profile:r)   r/   labelr   r   flagposcellTr/   sizetypemultipler      rA   r   
   
proportionr@   border   r)   r/   rD   r      )"r&   BoxSizerVERTICALGridBagSizerr+   rstrip_r   ID_ANYAddALIGN_CENTER_VERTICALr   r   DIALOG_GSELECT_SIZESetValueBindEVT_TEXTOnSelectionALL
StaticLineLI_HORIZONTALGROWLEFTRIGHTStdDialogButtonSizerr	   ID_OK
SetDefault	AddButton	ID_CANCELRealizeALIGN_RIGHTSetSizerFitr.   sizerboxrastTextrtxtr=   	selectionlinebtnsizerbtns              r2   r,   zProfileRasterDialog._do_layoutQ   s   BKK(oo11- 	"A	!H	" ??3'23$299C@B44&Ayy..
	 	8$r{{D$4$45	v&		#!"&&	<}}BIIHB<L<L
 			$1277RWW+<rxx+GPQ	R**,T288$3T2<<(3		(qr~~/Fq	Qe		$r3   c                     | j                  |j                               j                         j                  d      | _        y)z1Choose maps to profile. Convert these into a listr;   NFindWindowByIdGetIdGetValuesplitr+   r.   events     r2   r_   zProfileRasterDialog.OnSelection   s.    --ekkm<EEGMMcRr3   N)
__name__
__module____qualname__r&   rX   rW   DEFAULT_DIALOG_STYLEr(   r,   r_    r3   r2   r   r   .   s/     99/0%% D/bSr3   r   c                   r    e Zd Zej                   ed      ej                  fdZd Zd Z	d Z
d Zd Zd Zy	)
ScatterRasterDialogz,Select pairs of raster maps for scatterplotsc                 t   t        j                  j                  | |||fd|i| || _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  | _        | j                  j                  | _        d| _        g d| _	        | j                          y)r   r   r9   r   N)r&   r'   r(   r)   r+   binsscattertypemaptypespinbinsr*   r,   r-   s         r2   r(   zScatterRasterDialog.__init__   s     			4UJ%J6J++00KK$$	;;22{{**
" 	r3   c                 N   t        j                  t         j                        }t        j                  dd      }d}t	        | j
                        dkD  rC| j
                  D ]#  }t        |t              r	|d|z  z  }|d|z  z  }% |j                  d      }t        d      }t        | t         j                  |	      }|j                  |t         j                  d
       t        | t         j                  t        j                   dd      }|j#                  |       |j%                  t         j&                  | j(                         |j                  |d       t        | t         j                  t        d      	      }|j                  |t         j                  d       t+        | t         j                  dddt         j,                        | _        | j.                  j1                  dd       | j.                  j#                  | j2                         |j                  | j.                  t         j                  d       |j                  |dt         j4                  d       t        j6                  | t         j                  dt         j8                        }|j                  |dt         j:                  t         j<                  z  t         j>                  z  d       t        j@                         }	tC        | t         jD                        }
|
jG                          |	jI                  |
       tC        | t         jJ                        }
|	jI                  |
       |	jM                          |j                  |	dt         jN                  t         j4                  z  d       | j.                  j%                  t         j&                  | jP                         | j.                  j%                  t         jR                  | jP                         | jU                  |       |jW                  |        y )Nr5   r6   r9   r   z%s,%s,r:   r;   z7Select pairs of raster maps for bivariate scatterplots:r<   r>   r?   rB   TrC   rG   rI   Number of bins (for FP maps)rH   r      2   d   rP   r)   r/   valuerA   rD   r   rH     rH   rH   rJ   rK   rN   rQ   rR   ),r&   rS   rT   rU   lenr+   
isinstancetuplerV   rW   r   rX   rY   rZ   r   r   r[   r\   r]   r^   r_   r   SP_ARROW_KEYSr   SetRanger   r`   ra   rb   rc   rd   re   rf   r	   rg   rh   ri   rj   rk   rl   	OnSetBinsEVT_SPINCTRLrm   rn   ro   s              r2   r,   zScatterRasterDialog._do_layout   s   BKK(oo11- t!#__ *a'1,H	)H	*
  s+H IJ$299C@B44&Ayy..
	 	8$r{{D$4$45	v& BIIQ/M-N
 	B44&A yy""
 	q$'tyy)B$<$<&I 			#!"&&	<}}BIIHB<L<L
 			$1277RWW+<rxx+GPQ	R**,T288$3T2<<(3		(qr~~/Fq	Q2;;72??DNN; 	e		$r3   c                     | j                  |j                               j                         j                  dd      | _        y)z>Select raster maps for scatterplot. Must select maps in pairs.r;   rH   Nrz   r   s     r2   r_   zScatterRasterDialog.OnSelection  s1    --ekkm<EEGMMcSTUr3   c                 B    | j                   j                         | _        yz3Bins for histogramming FP maps (=nsteps in r.stats)Nr   r}   r   r   s     r2   r   zScatterRasterDialog.OnSetBins	      MM**,	r3   c                 .    |j                         | _        y N)	GetStringr   r   s     r2   OnSetScattertypesz%ScatterRasterDialog.OnSetScattertypes  s     ??,r3   c                     t               }t               }| j                  D ]F  }|j                  |       t        |      dk(  s#|j                  t	        |             t               }H t        |      S )zGet raster pairs   )listr+   appendr   r   )r.   	pairsListpairrs   s       r2   GetRasterPairsz"ScatterRasterDialog.GetRasterPairs  s^    F	v 	AKKN4yA~  t-v		 Ir3   c                 2    | j                   | j                  fS )zGet type and bins)r   r   )r.   s    r2   GetSettingszScatterRasterDialog.GetSettings  s    **r3   N)r   r   r   r&   rX   rW   r   r(   r,   r_   r   r   r   r   r   r3   r2   r   r      sD     99>?%%#JVpV--
+r3   r   c                   :    e Zd Zddej                  fdZd Zd Zy)PlotStatsFramer9   c                 V   t        j                  j                  | ||fd|i| | j                  t	        d             | j                  t        j                  t        j                  j                  t        d      t         j                               t        j                  |       | _        t        | j                  ddt         j                  t         j                   z  d      }|| _        || _        || _        | j)                          t        j*                  t         j,                        }t        j*                  t         j,                        }	t/        | j                  t         j0                  | j&                        }
|j3                  |
dt         j4                  t         j6                  z  d	
       t        j8                  | j                  t         j0                  dt         j:                        }|j3                  |dt         j4                  t         j6                  z  d	
       | j$                  D ]  }t/        |t         j0                  |      }|j=                  d       |	j3                  |dt         j>                  t         j@                  z  t         jB                  z  d	
       t        j8                  |t         j0                  dt         j:                        }|	j3                  |dt         j4                  t         j6                  z  d	
        |jE                  |	       |jG                  d       |jI                          |j3                  |dt         j4                  t         j@                  z  t         jB                  z  t         jJ                  z  d	
       t        j8                  | j                  t         j0                  dt         j:                        }|j3                  |dt         j4                  t         j@                  z  t         jB                  z  d	
       t        j*                  t         jL                        }tO        | j                  t         jP                  t	        d            }|jS                  t	        d             |j3                  |dt         j6                  d
       tO        | j                  t         jT                        }|jW                          |j3                  |dt         j6                  d
       |j3                  |dt         j6                  d
       |jY                  t         jZ                  | j\                         |jY                  t         jZ                  | j^                         | j                  jE                  |       |ja                  |        y)z/Dialog to display and save statistics for plotsr   
Statisticsz	grass.icorP   )  r   )rD   r   namer<   r   r5   rK   rN   rQ   WHITErH   zC&opyr/   r=   z1Copy regression statistics the clipboard (Ctrl+C)rR   N)1r&   Framer(   SetLabelrW   SetIconIconospathjoinr   BITMAP_TYPE_ICOPanelpanelr   TAB_TRAVERSALSUNKEN_BORDERr)   messager0   CenterOnParentrS   rT   r   rX   rY   rc   r`   ra   rb   SetBackgroundColourEXPANDrd   re   rm   SetAutoLayoutSetupScrollingBOTTOM
HORIZONTALr	   ID_COPY
SetToolTipID_CLOSErh   r]   
EVT_BUTTONOnCloseOnCopyrn   )r.   r)   r/   r   r0   r   r1   sprp   txtSizer
statstitlerv   statsstatstxtbtnSizerbtn_clipboard	btnCancels                    r2   r(   zPlotStatsFrame.__init__"  s    	$B%B6Bao&RWWRWW\\';?ASASTUXXd^
JJ""R%5%55
 

 BKK(;;r{{+tzzbiitzzR
		*2661A!	L}}::"))("BRBR
 			$1277RVV+;A	F\\ 		NE!		GH((1LLQRYY-@288-KTU   ==biihb>N>ND LL!"''BFF2B1LM		N 	H

		1277RWW#4rxx#?"))#KTU 	 	
 }}::"))("BRBR
 			$1277RWW+<rxx+GPQ	R
 ;;r}}-tzzbjj'
K  #V!WX]qrvvaH4::r{{3	Y1266!D		(qrvva	@ 	r}}dll32==$++6

E"		$r3   c                    | j                   dz   }| j                  D ]  }||z  }	 t        j                         }|j	                  |       t        j
                  j                         r\t        j
                  j                  |       t        j
                  j                          t        j                  t        d             yy)z*Copy the regression stats to the clipboard
z)Regression statistics copied to clipboardN)r0   r   r&   TextDataObjectSetTextTheClipboardOpenSetDataClose
MessageBoxrW   )r.   r   stritemrdatas        r2   r   zPlotStatsFrame.OnCopyu  s    jj4LL 	D4KC	 !!#c??!OO##E*OO!!#MM!GHI "r3   c                 &    | j                  d       y)zButton 'Close' pressedTN)r   r   s     r2   r   zPlotStatsFrame.OnClose  s    

4r3   N)r   r   r   r&   DEFAULT_FRAME_STYLEr(   r   r   r   r3   r2   r   r   !  s!    "$Bb6L6LQfJr3   r   c                   r    e Zd Zej                   ed      ej                  fdZd Zd Z	d Z
d Zd Zd Zy	)
HistRasterDialogz/Select raster map or imagery group to histogramc                    t        j                  j                  | |||fd|i| || _        | j                  j                  | _        | j                  j
                  | _        | j                  j                  | _        | j                  j                  | _        | j                  j                  | _        d| _	        | j                          y)z*Dialog to select raster maps to histogram.r   r9   N)r&   r'   r(   r)   r+   groupr   histtyper   r   r,   r-   s         r2   r(   zHistRasterDialog.__init__  s     			4UJ%J6J++00[[&&
KK$$	,,{{**r3   c                    t        j                  t         j                        }t        j                  dd      }t        j                  | t         j
                  dt        d      z  t         j                        | _        t        j                  | t         j
                  dt        d      z        | _	        | j                  dk(  r| j                  j                  d	       n*| j                  d
k(  r| j                  j                  d	       |j                  | j                  t         j                  d       |j                  | j                  t         j                  d       t        | t         j
                  t        d            }|j                  |t         j                  d       t        | t         j
                  t         j"                  d      | _        | j                  j'                         r| j$                  j)                          nGd}| j*                  D ]
  }|d|z  z  } |j-                  d      }| j$                  j                  |       |j                  | j$                  d       t        | t         j
                  t        d            }|j                  |t         j                  d       t        | t         j
                  t         j"                  d
      | _        | j                  j'                         r| j.                  j)                          n1| j0                  %| j.                  j                  | j0                         |j                  | j.                  d       t        | t         j
                  t        d            }|j                  |t         j                  d       t3        | t         j
                  dddt         j4                        | _        | j6                  j9                  d d!       | j6                  j                  | j:                         |j                  | j6                  t         j                  d"       t        | t         j
                  t        d#            }|j                  |t         j                  d$       g d%}t=        | t         j
                  d&|t         j>                  '      }|jA                  | jB                         |j                  |t         j                  d(       |j                  |d)t         jD                  d*+       t        jF                  | t         j
                  d,t         jH                  -      }|j                  |d)t         jJ                  t         jL                  z  t         jN                  z  d.+       t        jP                         }	tS        | t         jT                        }
|
jW                          |	jY                  |
       tS        | t         jZ                        }
|	jY                  |
       |	j]                          |j                  |	d)t         j^                  t         jD                  z  d.+       | ja                  t         jb                  | jd                  | j                         | ja                  t         jb                  | jd                  | j                         | j$                  ja                  t         jf                  | jh                         | j.                  ja                  t         jf                  | jj                         | j6                  ja                  t         jf                  | jl                         | j6                  ja                  t         jn                  | jl                         |ja                  t         jf                  | jp                         | js                  |       |ju                  |        y )/Nr5   r6    %s zHistogram single raster)r/   r=   r   zHistogram imagery groupr   rasterTr   r>   r?   rG   zSelect raster map:r<   r   rB   )r/   rD   rE   r9   r:   r;   r   rI   zSelect image group:r   r   r   rH   r   r5   r   r   r   r   rH   r   r5   rH   zHistogram type   r   )countpercentarea   rP   r)   r/   rD   choicesr   r   rH   r   rJ   rK   rN   rQ   rR   );r&   rS   rT   rU   RadioButtonrX   rW   RB_GROUPrasterRadio
groupRadior   r\   rY   rZ   r   r   r   r[   
rselectionr}   Disabler+   rV   
gselectionr   r   r   r   r   r   r   CB_DROPDOWNSetStringSelectionr   r`   ra   rb   rc   rd   re   rf   r	   rg   rh   ri   rj   rk   rl   r]   EVT_RADIOBUTTON	OnHistMapr^   OnRasterSelectionOnGroupSelectionr   r   OnSetHisttypesrm   rn   )r.   rp   rq   r=   rr   rs   typesr   rv   rw   rx   s              r2   r,   zHistRasterDialog._do_layout  sa   BKK(oo11-
 >>yy1677++	
 ..RYYfq1J/K&K
 <<8#%%d+\\W$OO$$T*  r'?'?VLb&>&>FK
 $299A>R<STB44&A RYYY%B%B
 ??##%OO##%H__ &EAI%&s+HOO$$X.V,
 $299A>S<TUB44&A RYYY%B%B
 $$&OO##%zz%((4V,
 BIIQ/M-N
 	B44&A yy""
 	q$'tyy)B$<$<&I$299A>N<OPB44&A,yy..
 	##DMM2r77VD		#!"&&	<}}BIIHB<L<L
 			$1277RWW+<rxx+GPQ	R**,T288$3T2<<(3		(qr~~/Fq	Q
 			"$$dnnd6F6FG		"$$dnndooFR[[$*@*@AR[[$*?*?@2;;72??DNN;bkk4#6#67e		$r3   c                    | j                   j                         du rWd| _        | j                  j	                          | j
                  j                          | j
                  j                  d       y| j                  j                         du rWd| _        | j
                  j	                          | j                  j                          | j                  j                  d       yy)zoHandler for radio buttons to choose between histogramming a
        single raster and an imagery group
        Tr   r9   r   N)	r  r}   r   r  Enabler  r  r\   r  r   s     r2   r
  zHistRasterDialog.OnHistMap  s     $$&$.#DLOO""$OO##%OO$$R(__%%'4/"DLOO""$OO##%OO$$R(r3   c                 d    g | _         | j                   j                  |j                                y)z)Handler for selecting a single raster mapN)r+   r   r   r   s     r2   r  z"HistRasterDialog.OnRasterSelection*  s"    u01r3   c                 r   g | _         |j                         | _        t        j                  dd| j                  z  dd      j                         j                         }|dddgfvr|| _         yt        j                  t        d      t        d	      t        j                  t        j                  z  
       y)z#Handler for selecting imagery groupzi.groupz%sTg)r   quietflagsNr9   z(Selected group must be in current mapsetzInvalid input)r   captionr   )r+   r   r   grassread_commandstrip
splitlinesr&   r   rW   OK
ICON_ERROR)r.   r   rets      r2   r  z!HistRasterDialog.OnGroupSelection/  s    __&


!2$c UWZ\ 	 tR"&&!DOMMDE/*eebmm+r3   c                 B    | j                   j                         | _        yr   r   r   s     r2   r   zHistRasterDialog.OnSetBinsD  r   r3   c                 .    |j                         | _        y r   )r   r   r   s     r2   r  zHistRasterDialog.OnSetHisttypesH  s    )r3   N)r   r   r   r&   rX   rW   r   r(   r,   r
  r  r  r   r  r   r3   r2   r   r     sB     99AB%%,xt"2
*-*r3   r   c                   \    e Zd Zdej                  fdZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zy)
TextDialogr9   c                    t        j                  j                  | |||fd|i| || _        t         j                  t         j
                  t         j                  t         j                  t         j                  t         j                  t         j                  d| _        t         j                  t         j                  t         j                  d| _        t         j                   t         j"                  t         j$                  d| _        || _        || _        | j(                  j,                  | _        | j(                  j.                  | _        | j(                  j0                  | _        | j(                  j2                  | _        | j(                  j4                  j7                         | _        | j(                  j4                  j;                         | _        | j(                  j4                  j?                         | _         | jC                          y)zkDialog to set histogram text options: font, title
        and font size, axis labels and font size
        r   )default
decorativeromanscriptswissmodernteletype)normalslantitalic)r*  lightboldN)"r&   r'   r(   _gifaceFONTFAMILY_DEFAULTFONTFAMILY_DECORATIVEFONTFAMILY_ROMANFONTFAMILY_SCRIPTFONTFAMILY_SWISSFONTFAMILY_MODERNFONTFAMILY_TELETYPEffamilydictFONTSTYLE_NORMALFONTSTYLE_SLANTFONTSTYLE_ITALIC
fstyledictFONTWEIGHT_NORMALFONTWEIGHT_LIGHTFONTWEIGHT_BOLDfwtdictr)   plottypeptitlexlabelylabel
propertieswx_font	GetFamily
fontfamilyGetStyle	fontstyle	GetWeight
fontweightr,   r.   r)   gifacer/   r0   r@  r   r1   s           r2   r(   zTextDialog.__init__M  st    			4UJ%J6J  ,,22((**((**..
 ))''))
 **((&&
  kk((kk((kk((++00 ++--779,,557++--779r3   c           	      ,   t        j                  t         j                        }t        | t         j                  dt        d      z        }t        j                  |t         j                        }t        j                  dd      }t        | t         j                  t        d            }|j                  |t         j                  d       t        | t         j                  d	d
      | _        | j                  j                  | j                         |j                  | j                  d       t        | t         j                  t        d            }|j                  |t         j                  d       t        | t         j                  d	ddt         j                         | _        | j"                  j%                  dd       | j"                  j                  t'        | j(                  d   d   d                |j                  | j"                  d       t        | t         j                  t        d            }|j                  |t         j                  d       t        | t         j                  d	d
      | _        | j*                  j                  | j,                         |j                  | j*                  d       t        | t         j                  t        d            }|j                  |t         j                  d       t        | t         j                  d	d
      | _        | j.                  j                  | j0                         |j                  | j.                  d       t        | t         j                  t        d            }|j                  |t         j                  d       t        | t         j                  d	ddt         j                         | _        | j2                  j%                  dd       | j2                  j                  t'        | j(                  d   d   d                 |j                  | j2                  d!       |j                  |       |j                  |t         j4                  t         j6                  z  d"#       t        | t         j                  dt        d$      z        }t        j                  |t         j                        }t        j                  dd      }t        | t         j                  t        d%            }|j                  |t         j                  d       t9        | t         j                  d
t;        | j<                  j?                               t         j@                  &      | _!        | jB                  jE                  d'       | j<                  jG                         D ]4  }	| jH                  |	d(   k(  s| jB                  jE                  |	d)           n |j                  | jB                  dt         jJ                  *       t        | t         j                  t        d+            }|j                  |t         j                  d       t9        | t         j                  d
t;        | jL                  j?                               t         j@                  &      | _'        | jN                  jE                  d,       | jL                  jG                         D ]4  }	| jP                  |	d(   k(  s| jN                  jE                  |	d)           n |j                  | jN                  dt         jJ                  *       t        | t         j                  t        d-            }|j                  |t         j                  d       t9        | d
t;        | jR                  j?                               t         j@                  .      | _*        | jT                  jE                  d,       | jR                  jG                         D ]4  }	| jV                  |	d(   k(  s| jT                  jE                  |	d)           n |j                  | jT                  dt         jJ                  *       |jY                  d(       |j                  |t         j6                  /       |j                  |t         jZ                  t         j\                  z  t         j^                  z  t         j6                  z  d"#       t        j`                  | t         j                  d0t         jb                  1      }
|j                  |
d)t         jd                  t         jZ                  z  t         j\                  z  d"2       tg        | t         jh                        }tg        | t         jj                        }tg        | t         jl                        }tg        | t         jn                        }|jq                          |js                  t         jt                  | jv                         |jy                  t        d3             |js                  t         jt                  | jz                         |jy                  t        d4             |jq                          |js                  t         jt                  | j|                         |jy                  t        d5             |jy                  t        d6             t        j~                         }|j                  |       |j                  |       |j                  |       |j                          t        j                  t         j                        }|j                  |d)t         j4                  d2       |j                  |d)t         j4                  d2       |j                  |d)t         j4                  d2       | j                  js                  t         j                  | j                         | j*                  js                  t         j                  | j                         | j.                  js                  t         j                  | j                         | j                  |       |j                  |        y7)8z	Do layoutr   zText settingsr<   rR   r8   r7   zProfile title:r>   r?   r9   r   r)   r/   r   rD   rG   rI   zTitle font size (pts):r   r   r   rP   r   r   fontprop	titleSizer   zX-axis label:r   r   zY-axis label:r   r   zLabel font size (pts):r   axisSizer   r5   r@   rM   zFont settingszFont family:r   r'  rH   r   )rA   r@   zStyle:r*  zWeight:)r)   rD   r   r   )r@   rN   rQ   rK   %Apply changes for the current session6Apply changes for the current session and close dialogHApply and save changes to user settings file (default for next sessions)Close dialog and ignore changesN)Ir&   rS   rT   r   rX   rW   StaticBoxSizerrU   r   rY   rZ   r   ptitleentryr\   rA  r   r   
ptitlesizer   intrD  xlabelentryrB  ylabelentryrC  axislabelsizer`   r   r   r   r7  keysr  	ffamilycbr  itemsrG  rl   r;  fstylecbrI  r?  fwtcbrK  AddGrowableColrd   re   r   ra   rb   rc   r	   ID_SAVEID_APPLYrg   rj   rh   r]   r   OnApplyr   OnOkOnSaverf   ri   rk   r   r^   OnTitleOnXLabelOnYLabelrm   rn   )r.   rp   rq   boxSizer	gridSizerr=   tlabelllabellabel1r   rv   btnSavebtnApplybtnOkr   btnStdSizerr   s                    r2   r,   zTextDialog._do_layout  s    BKK(t		!OBT9TU$$S"++6OO3	
 $299A>N<OPe"":":G#4BIIRiX!!$++.d&&F3
 BIIQ/G-H
 	f2#;#;H"yy""
 	  C(  T__V%<V%D[%Q!RSdoo62
 $299Ao<NOe"":":G#4BIIRiX!!$++.d&&F3
 $299Ao<NOe"":":G#4BIIRiX!!$++.d&&F3
 BIIQ/G-H
 	f2#;#;H%yy""
 	##As+##C(?(G
(S$TUd((f5Y		("))!3A	>
 t		!OBT9TU$$S"++6OO3	
 4BIIQ~=NOf2#;#;H!yy))..01..
 	))'2$$**, 	D$q')11$q':	 	dnn&r~~F
 $299AhKHe"":":G yy--/0..
 	((2OO))+ 	D~~a(00a9	 	dmmbnnE
 $299AiLIe"":":G**,-..	

 	

%%h/LL&&( 	D$q')

--d1g6	
 	djjf2>>B  #YRYY/		(288!3bii!?"))!KTU	V}}BIIHB<L<L
 			$1277RWW+<rxx+GPQ	R
 rzz*$,tRXX&4.	 	bmmT\\2AEFG

2==$)),STUR]]DKK0Z	

 	Q@AB --/e$h'i(;;r}}-WB[QRVVAF		(qrvva	@
 	bkk4<<8bkk4==9bkk4==9e		$r3   c                 .    |j                         | _        y r   )r   rA  r   s     r2   rm  zTextDialog.OnTitleL      oo'r3   c                 .    |j                         | _        y r   )r   rB  r   s     r2   rn  zTextDialog.OnXLabelO  rz  r3   c                 .    |j                         | _        y r   )r   rC  r   s     r2   ro  zTextDialog.OnYLabelR  rz  r3   c                    | j                   j                         | j                  d   d   d<   | j                  j                         | j                  d   d   d<   | j                  | j
                  j                            }|| j                  d   d   d<   | j                  j                  j                  |       | j                  | j                  j                            }|| j                  d   d   d<   | j                  j                  j                  |       | j                  | j                  j                            }|| j                  d   d   d<   | j                  j                  j                  |       y )NrR  rS  rT  rU  familyr   weight)r]  r}   rD  ra  r7  rc  GetStringSelectionr)   rE  	SetFamilyr;  re  SetStyler?  rf  	SetWeight)r.   r~  r   r  s       r2   UpdateSettingszTextDialog.UpdateSettingsU  s1   7;7O7O7Q'46:6H6H6Q6Q6S'
3!!$.."C"C"EF4:'1%%f- @ @ BC38'0$$U+djj;;=>4:'1%%f-r3   c                    | j                  d       i }t        j                  |       t        j                  | j                        || j                  <   t        j
                  |       | j                  j                  t        d      t        j                  z         | j                  t        j                         y)Button 'Save' pressedNsettingsr   z#Plot text sizes saved to file '%s'.rj  r   ReadSettingsFileGetr@  
SaveToFiler/  WriteLogrW   filePathEndModalr&   rg   r.   r   fileSettingss      r2   rl  zTextDialog.OnSavec  s    T%%|<&2&6&6T]]&KT]]#-34|7L7LL	
 	bhhr3   c                 Z    | j                          | j                  j                  |        y)zButton 'Apply' pressedN)r  r)   
OnPlotTextr   s     r2   rj  zTextDialog.OnApplyo  s     t$r3   c                 d    | j                  d       | j                  t        j                         yzButton 'OK' pressedNrj  r  r&   rg   r   s     r2   rk  zTextDialog.OnOkt      Tbhhr3   N)r   r   r   r&   r   r(   r,   rm  rn  ro  r  rl  rj  rk  r   r3   r2   r!  r!  L  s@     %%7rDL(((.
 %
 r3   r!  c                   \    e Zd Zdej                  fdZd Zd Zd Zd Z	d Z
d Zd	 Zd
 Zy)	OptDialogr9   c                    t        j                  j                  | |||fd|i| || _        || _        |j
                  | _        |j                  | _        || _        || _        g d| _        g d| _	        i | _
        || _        | j                  j                  | _        | j                  j                  | _        | j                  j                  | _        d| _        t        | j                        dk(  rJt        j                   | t#        d      t#        d      t         j$                  t         j&                  z         | j)                          y	)
zDialog to set various options for data plotted, including: line
        width, color, style; marker size, color, fill, and style; grid
        and legend options.
        r   )circledotsquaretriangletriangle_downcrossplus)minautocustomr9   r   z'No map or image group selected to plot.Warning)r)   r   r  r   N)r&   r'   r(   r)   r/  linestyledict
ptfilldictr@  
pttypelistaxislistwxIdr   r+   rD  mapr   r   rW   r  r  r,   rL  s           r2   r(   zOptDialog.__init__{  s	    			4UJ%J6J #11 ++ 
 2 	 kk((++00++00t1$MMCD)eebmm+	 	r3   c                 n    g }|D ]-  }t        |      j                  d      }|j                  |       / |S )zaConverts tuples to strings when rasterList contains raster
        pairs for scatterplot
        z())r   r  r   )r.   tlistr   is       r2   ConvertTupleszOptDialog.ConvertTuples  s<      	AAT"AKKN	 r3   c           	      x5   t        j                  t         j                        }t        | t         j                  dt        d      z        }t        j                  |t         j                        }d| j                  d<   d| j                  d<   d| j                  d<   d| j                  d<   d| j                  d	<   d| j                  d
<   d| j                  d<   i | j                  d<   i | j                  d<   i | j                  d<   t        | j                        dk(  ryt        | t         j                  t        d            }t        j                  |t         j                        }t        j                  dd      }d}g }| j                  D ]  }|j                  t        |              t        | t         j                  d|      | _        | j                  j!                  t        d             | j"                  s-| j                  | j                  j%                            | _        n.| j                  j'                  t        | j"                               |j)                  | j                  t         j*                  |dfd       | j,                  dk7  r|dz  }t/        | t         j                  t        d            }	|j)                  |	t         j*                  |df       t1        | t         j                  | j2                  | j"                     d         }
|
j5                         | j                  d<   |j)                  |
|df       |dz  }t/        | t         j                  t        d            }	|j)                  |	t         j*                  |df       t7        | t         j                  dd t         j8                  !      }|j;                  dd"       |j=                  | j2                  | j"                     d          |j5                         | j                  d<   |j)                  ||df       |dz  }t/        | t         j                  t        d#            }	|j)                  |	t         j*                  |df       t        | t         j                  d$t?        | j@                  jC                                     }|j'                  | j2                  | j"                     d          |j5                         | j                  d<   |j)                  ||df       |dz  }t/        | t         j                  t        d%            }	|j)                  |	t         j*                  |df       tE        | t         j                  dd&'      }|j=                  | j2                  | j"                     d          |j)                  ||df       |j5                         | j                  d<   |j)                  |       |j)                  |t         jF                  d()       | j,                  d*k(  r[t        | t         j                  dt        d+      z        }t        j                  |t         j                        }t        j                  dd      }t/        | t         j                  t        d,            }	|j)                  |	t         j*                  d-       t1        | t         j                  | jH                  d   d.         }|j5                         | j                  d   d.<   |j)                  |d/       t/        | t         j                  t        d0            }	|j)                  |	t         j*                  d1       t7        | t         j                  dd t         j8                  !      }|j;                  dd"       |j=                  | jH                  d   d2          |j5                         | j                  d   d2<   |j)                  |d3       t/        | t         j                  t        d4            }	|j)                  |	t         j*                  d5       t        | t         j                  d$t?        | jJ                  jC                                     }|j'                  | jH                  d   d6          |j5                         | j                  d   d6<   |j)                  |d7       t/        | t         j                  t        d%            }	|j)                  |	t         j*                  d8       tE        | t         j                  dd&'      }|j=                  | jH                  d   d9          |j5                         | j                  d   d9<   |j)                  |d:       t/        | t         j                  t        d;            }	|j)                  |	t         j*                  d<       t        | d&| jL                  =      }|j'                  | jH                  d   d>          |j5                         | j                  d   d><   |j)                  |d?       |j)                  |       |j)                  |t         jF                  d()       n| j,                  dk(  r|t        | t         j                  dt        d@      z        }t        j                  |t         j                        }t        j                  dd      }t/        | t         j                  t        d,            }	|j)                  |	t         j*                  d-       t1        | t         j                  | j2                  | j"                     d         }|j5                         | j                  d<   |j)                  |d/       t/        | t         j                  t        d0            }	|j)                  |	t         j*                  d1       t7        | t         j                  dd t         j8                  !      }|j;                  dd"       |j=                  | j2                  | j"                     d          |j5                         | j                  d<   |j)                  |d3       t/        | t         j                  t        d4            }	|j)                  |	t         j*                  d5       t        | t         j                  d$t?        | jJ                  jC                                     }|j'                  | j2                  | j"                     d
          |j5                         | j                  d
<   |j)                  |d7       t/        | t         j                  t        d%            }	|j)                  |	t         j*                  d8       tE        | t         j                  dd&'      }|j=                  | j2                  | j"                     d          |j5                         | j                  d<   |j)                  |d:       t/        | t         j                  t        d;            }	|j)                  |	t         j*                  d<       t        | d&| jL                  =      }|j'                  | j2                  | j"                     d	          |j5                         | j                  d	<   |j)                  |d?       |j)                  |       |j)                  |t         jF                  d()       |j)                  |t         jF                  t         jN                  z  d()       t        | t         j                  dt        dA      z        }t        j                  |t         j                        }t        j                  t         j                        }d}t        dB      dft        dC      dffD ]  \  }}t        | t         j                  d|z        }t        j                  |t         j                        }t        j                  dd      }| jH                  |   dD   }d}t/        | t         j                  t        dE            }	|j)                  |	t         j*                  |df       t        | t         j                  dF| jP                        }|j'                  |d>          |j!                  t        dG             |j5                         | j                  |   d><   |j)                  ||df       |dz  }t/        | t         j                  t        dH            }	|j)                  |	t         j*                  |df       tE        | t         j                  ddI'      }|j=                  t        |dJ                |j5                         | j                  |   dJ<   |j)                  ||df       |dz  }t/        | t         j                  t        dK            }	|j)                  |	t         j*                  |df       tE        | t         j                  ddI'      }|j=                  t        |dL                |j5                         | j                  |   dL<   |j)                  ||df       |dz  }tS        | t         j                  t        dM            }|j=                  |dN          |j5                         | j                  |   dN<   |j)                  ||dfdO       |dk(  r"t         jF                  t         jN                  z  }nCt         jT                  t         jV                  z  t         jX                  z  t         jN                  z  }|j)                  |t         jF                  d()       |j)                  ||d()       |dz  } |j)                  |t         jF                  t         jN                  z  d()       i | j                  dP<   i | j                  d9<   i | j                  dQ<   t        | t         j                  dt        dR      z        }t        j                  |t         j                        }t        j                  dd      }d}t/        | t         j                  t        dS            }	|j)                  |	t         j*                  |df       t1        | t         j                  | jH                  dP   d.         }|j5                         | j                  dP   d.<   |j)                  ||df       |dz  }tS        | t         j                  t        dT            }|j=                  | jH                  dP   dU          |j5                         | j                  dP   dU<   |j)                  ||dfdO       |dz  }t/        | t         j                  t        dV            }	|j)                  |	t         j*                  |df       t7        | t         j                  dd t         j8                  !      }|j;                  ddW       |j=                  t[        | jH                  dQ   dD   dX                |j5                         | j                  dQ   dX<   |j)                  ||df       |dz  }tS        | t         j                  t        dY            } | j=                  | jH                  d9   dU          | j5                         | j                  d9   dU<   |j)                  | |dfdO       |j)                  |d()       |j)                  |t         j\                  t         jX                  z  t         jV                  z  t         jN                  z  d()       |j)                  |t         jF                  d)       t        j^                  | t         j                  dZt         j`                  [      }!|j)                  |!dt         jb                  t         j\                  z  t         jX                  z  d(\       te        | t         jf                        }"te        | t         jh                        }#te        | t         jj                        }$te        | t         jl                        }%|$jo                          |#j!                  t        d]             |$j!                  t        d^             |"j!                  t        d_             |%j!                  t        d`             t        jp                         }&|&js                  |$       |&js                  |#       |&js                  |%       |&ju                          t        j                  t         j                        }'|'j)                  |"dt         jF                  d\       |'j)                  |&dt         jF                  d\       |j)                  |'dt         jF                  d\       | j                  jw                  t         jx                  | jz                         |#jw                  t         j|                  | j~                         |$jw                  t         j|                  | j                         |$jo                          |"jw                  t         j|                  | j                         | j                  |       |j                  |        y)azOptions dialog layoutr   zPlot settingsr<   r   pcolorpwidthpstylepsizeptypepfillplegendmarkerx-axisy-axisNzMap/image plottedrR   rO  )i,  rP   )r)   r/   rD   r   zSettings for selected map)rH   r   )r@   rA   spanscatterrH   z
Line colorr?   )r)   r/   colourrI   z
Line widthr9   rQ  )r)   r/   r   rD   r   rJ   z
Line style)x   rP   Legend)   rP   rP  r5   rV  profilez Transect segment marker settingsColorr>   colorrG   Sizer   rD   r   Fillr   fillr   r   legendr   Styler   )r)   rD   r   rE   r   zScatterplot pointszAxis settingszX-AxiszY-AxisrS  Scaler   zMAutomatic axis scaling, custom max and min, or scale matches data range (min)z
Custom min)F   rP   r  z
Custom maxmaxz	Log scalelog)rA   r  gridrR  zGrid and Legend settingsz
Grid colorz	Show gridenabledzLegend font sizer   
legendSizezShow legendrN   rQ   rK   rW  rX  rY  rZ  )Dr&   rS   rT   r   rX   rW   r[  r   r  r   r+   rU   r   r   r   	mapchoicer   r  GetCurrentSelectionr  rY   rZ   r@  r   r   r   r|   r   r   r   r\   r   r  rb  r   r`   rD  r  r  r   r  r
   TOPr   re   r^  rd   ra   rb   rc   r	   rh  ri  rg   rj   rh   rf   ri   rk   r]   
EVT_CHOICEOnSetMapr   rj  rk  rl  rm   rn   )(r.   rp   rq   boxMainSizerrp  rq  row
choicelistr  r=   r  widthr   r  ptcolorptsizeptfillptlegendpttypemiddleSizeridxaxisatyperS  rE   r  r  r  r@   	gridcolorgridshowlegendfontsize
legendshowrv   ru  rv  rw  r   rx  r   s(                                           r2   r,   zOptDialog._do_layout  s   BKK(t		!OBT9TU((bmm<		(		(		(		'		'		' 		) 		( 		( 		(
 t1$t		;N9OP$$S"++6OO3	
 	&Ac!f%	&  BIIIz
 	!!!$?"@Axxt~~'I'I'KLDHNN--c$((m<NN!9!9Qxf 	 	
 ==I%1HCdryy,PEMM%b&>&>S!HMM 		$++dhh2G2QE #(++-DIIhMM%c1XM.1HCdryy,PEMM%b&>&>S!HMM99&&E NN1b!NN4;;txx0:;"'++-DIIhMM%c1XM.1HCdryy,PEMM%b&>&>S!HMM99T//4467	E $$T[[%:8%DE"'++-DIIhMM%c1XM.q$299AhKHe"":":aI"))2INDHH-i89f3(+%||~		)Yq9
 ==I%99q!CDDC ((bkk:HQQ7Idryy'
KEMM%b&>&>FMK"		$//(2KG2TG ,3==?DIIh(MM'vM.dryy&	JEMM%b&>&>FMK99&&F OOAr"OODOOH5f=>*0,,.DIIh'MM&fM-dryy&	JEMM%b&>&>FMK99T__1134	F %%dooh&?&GH*0,,.DIIh'MM&fM-dryy(LEMM%b&>&>FMKt		)THdooh7AB,4NN,<DIIh)MM(M/dryy'
KEMM%b&>&>FMK4iQF%%dooh&?&GH*0,,.DIIh'MM&fM-LL#XBFF1=
 ]]i'		!<P:Q1QC ((bkk:HQQ7Idryy'
KEMM%b&>&>FMK"		$++dhh2G2QG #*--/DIIhMM'vM.dryy&	JEMM%b&>&>FMK99&&F OOAr"OODKK1':;!'DIIgMM&fM-dryy&	JEMM%b&>&>FMK99T__1134	F %%dkk$((&;G&DE!'DIIgMM&fM-dryy(LEMM%b&>&>FMKt		)THdkk$((3I>?#+>>#3DIIi MM(M/dryy'
KEMM%b&>&>FMK4iQF%%dkk$((&;G&DE!'DIIgMM&fM-LL#XBFF1=		,RVVbii%7	B
 t		!OBT9TU((bmm<kk"--0x[(3ak85LM 4	KD%4BIIVd]KC((bmm<HQQ7I??5)&1DCdryy'
KEMM%b&>&>S!HMM			4==D ##DL1OOc
 (,zz|DIIeV$MM$S!HM-1HCdryy,PEMM%b&>&>S!HMM$299BXNCLLT%[)*&)iikDIIeU#MM#C8M,1HCdryy,PEMM%b&>&>S!HMM$299BXNCLLT%[)*&)iikDIIeU#MM#C8M,1HC$299AkNKCLLe%&)iikDIIeU#MM#C8&M9axvv		)vv		)BHH4ryy@LLL:XD;1HCi4	l 	266BII+=aH
 		& 		(		&BIIVa8R6S-S
 ((bmm<OO3	$299AlOLe"":":aI BIIdoof.Eg.N
	 &/__%6		&'"ic1X.q4BIIQ{^L$//&1)<='/~~'7		&)$hS!H6:q$299A>P<QRe"":":aI!BIIRhbFVFV
 	3'DOOF$;F$CL$Q RS*8*>*>*@		&,'n3(3qTbiiq?OP
DOOH5i@A)3)9)9);		(I&jsAhV<a8rww1BII=		IRS 	 	
 			+BFF1	5
 }}BIIHB<L<L
 			$1277RWW+<rxx+GPQ	R
 rzz*$,tRXX&4.	 	AEFGSTUZ	

 	Q@AB --/e$h'i(;;r}}-WB[QRVVAF		(qrvva	@
 	BMM4==9bmmT\\2

2==$)),R]]DKK0e		$r3   c                    |j                         }| j                  |   | _        | j                  | j                  d         j                  | j                  | j                     d          | j                  | j                  d         j                  | j                  | j                     d          | j                  dk7  r| j                  | j                  d         j                  | j                  | j                     d          | j                  | j                  d         j                  | j                  | j                     d          n| j                  dk(  r| j                  | j                  d         j                  | j                  | j                     d          | j                  | j                  d         j                  | j                  | j                     d          | j                  | j                  d         j                  | j                  | j                     d          | j                          y	)
z"Handler for changing map selectionr  r  r  r  r  r  r  r  N)GetSelectionr+   r  r{   r  	SetColourr   r\   r@  r  Refresh)r.   r   r  s      r2   r  zOptDialog.OnSetMapK  s     "??3' 	DIIh/0::KK!(+	
 	DIIi01::KK!),	

 ==I%		( 34==DHH%h/ 		( 34GGDHH%h/
 ]]i'		' 23<<DHH%g. 		' 23FFDHH%g. 		' 23FFDHH%g. 	r3   c                    | j                   | j                  j                            | _        | j	                          | j
                  j                          | j
                  j                         }| j
                  j                  |       y)z%Handler for changing any other optionN)	r+   r  r  r  r  r)   SetGraphStyleCreatePlotListDrawPlotr.   r   ps      r2   OnSetOptzOptDialog.OnSetOpto  s_    ??4>>#E#E#GH!!#KK&&(Qr3   c                    | j                  | j                  d         j                         j                         | j                  | j
                     d<   | j                  | j
                     d   | j                  d   d<   | j                  | j                  d         j                         | j                  | j
                     d<   | j                  dk7  rt        | j                  | j                  d         j                               | j                  | j
                     d<   | j                  | j
                     d   | j                  d   d<   | j                  | j                  d         j                         | j                  | j
                     d<   | j                  | j
                     d   | j                  d   d<   nf| j                  dk(  rV| j                  | j                  d         j                         | j                  | j
                     d<   | j                  | j
                     d   | j                  d   d<   | j                  | j                  d         j                         | j                  | j
                     d<   | j                  | j
                     d   | j                  d   d<   | j                  | j                  d	         j                         | j                  | j
                     d	<   | j                  | j
                     d	   | j                  d   d	<   d
D ]  }| j                  | j                  |   d         j                         | j                  |   d   d<   t        | j                  | j                  |   d         j                               | j                  |   d   d<   t        | j                  | j                  |   d         j                               | j                  |   d   d<   | j                  | j                  |   d         j                         | j                  |   d   d<     | j                  dk(  rI| j                  | j                  d   d         j                         j                         | j                  d   d<   | j                  | j                  d   d         j                         | j                  d   d<   | j                  | j                  d   d         j                         | j                  d   d<   | j                  | j                  d   d         j                         | j                  d   d<   | j                  | j                  d   d         j                         | j                  d   d<   | j                  | j                  d   d         j                         j                         | j                  d   d<   | j                  | j                  d   d         j                         | j                  d   d<   | j                  | j                  d   d         j                         | j                  d   d   d<   | j                  | j                  d   d         j                         | j                  d   d<   | j                  j                          y)z-Apply settings to each map and to entire plotr  r   r  r  r  r  r  r  r  )r  r  rE   rS  r  r  r  r  r  r  r  rD   r  r  r  rR  r  N)r{   r  	GetColourr  r   r  rD  r}   r@  r^  r  float	IsCheckedr)   UpdateLabels)r.   r  s     r2   r  zOptDialog.UpdateSettingsw  s    		( 34>>@DDF 	DHHh' /3kk$((.CH.M!(++/+>+>IIi ,

(* 	DHHi( ==I%.1##DIIh$78AAC/DKK!(+ 37++dhh2G2QDOOH%h/.2.A.A		(#/  " KK!(+ 37++dhh2G2QDOOH%h/]]i'-1-@-@		'".hj KK!'* 26TXX1Fw1ODOOH%g.-1-@-@		'".  " KK!'* 26TXX1Fw1ODOOH%g.-1-@-@		'".  " KK!'* 26TXX1Fw1ODOOH%g. ) 	D484G4G		$'5  " OOD!&)&1 49##DIIdOE$:;DDF4DOOD!&)%0 49##DIIdOE$:;DDF4DOOD!&)%0 483F3F		$&4ik OOD!&)%0	 ==I%##DIIh$7$@AKKMQQS OOH%g. 150C0C		(#F+1  " OOH%f- 150C0C		(#F+1hj OOH%f- 150C0C		(#F+1  " OOH%f- 372E2E		(#H-3hj OOH%h/
 		& 1' :;EEGKKM 	( .2-@-@IIfi(.

)+ 		* 9=8K8KIIfl+9

(* 	'5 04/B/BIIh	*0

)+ 	!), 	  "r3   c                    | j                  d       i }t        j                  |       t        j                  | j                        || j                  <   t        j
                  |       | j                  j                  t        d      t        j                  z         | j                  t        j                         y)r  Nr  r  z!Plot settings saved to file '%s'.r  r  s      r2   rl  zOptDialog.OnSave  s    T%%|<&2&6&6T]]&KT]]#-12\5J5JJ	
 	bhhr3   c                     | j                          | j                  j                          | j                  j                         }| j                  j	                  |       y)z-Button 'Apply' pressed. Does not close dialogN)r  r)   r  r  r  r  s      r2   rj  zOptDialog.OnApply  sB    !!#KK&&(Qr3   c                 d    | j                  d       | j                  t        j                         yr  r  r   s     r2   rk  zOptDialog.OnOk  r  r3   N)r   r   r   r&   r   r(   r  r,   r  r  r  rl  rj  rk  r   r3   r2   r  r  z  sC     %%7r	JX"H S#j
   r3   r  ) __doc__r   r&   r   r   core.settingsr   core.globalvarr   gui_core.gselectr   gui_core.wrapr   r   r	   r
   r   r   r   r   r   r   grass.scriptr  r'   r   r   r   r   r   r!  r  r   r3   r2   <module>r      s   * 
 	  & " #   'VS")) VSrW+")) W+tdRXX dNA*ryy A*Hk  k \	h	 		 h	 r3   