
    ը	f0                       d Z ddlmZ ddlZddlZddlZddlZddlmZ ddlZddl	m
Z
mZ ddlmc mZ ddlmZ ej$                  rddlmZ n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 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* ddl+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z< da=ddda>da?d Z@d ZA G d deB      ZC G d de<      ZD G d de<      ZE G d d e<      ZF G d! d"e,e
      ZG G d# d$e#eG      ZH G d% d&e7e9e      ZI G d' d(ej                        ZK G d) d*ej                        ZL G d+ d,ej                        ZMy)-aH  
@package gcp.manager

@brief Georectification module for GRASS GIS. Includes ground control
point management and interactive point and click GCP creation

Classes:
 - manager::GCPWizard
 - manager::LocationPage
 - manager::GroupPage
 - manager::DispMapPage
 - manager::GCPPanel
 - manager::GCPDisplay
 - manager::GCPList
 - manager::VectGroup
 - manager::EditGCP
 - manager::GrSettingsDialog

(C) 2006-2014 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 Original author Michael Barton
@author Original version improved by Martin Landa <landa.martin gmail.com>
@author Rewritten by Markus Metz redesign georectfier -> GCP Manage
@author Support for GraphicsSet added by Stepan Turek <stepan.turek seznam.cz> (2012)
    )print_functionN)copy)ColumnSorterMixinListCtrlAutoWidthMixin)	globalvar)adv)wizard)utils)Map)SelectLocationSelectMapsetSelect)GroupDialog)
FrameMixin)
RunCommandGMessageGErrorGWarning)UserSettings)MapPanel)Notification)
SpinCtrlButton
StaticText	StaticBoxCheckListBoxTextCtrlMenuListCtrlBitmapFromImageCheckListCtrlMixin)GridBagSizerTitledPage rastervectorr%   c                      t        t        j                  j                  t        j
                  d      d      } 	 t        j                  |       }| j                          |S # | j                          w xY w)Nzsmall_up_arrow.pngrb	openospathjoinr   IMGDIRwxImageclosestreamimgs     ,/usr/lib/grass83/gui/wxpython/gcp/manager.pygetSmallUpArrowImager6   X   sR    "'',,y//1EFMFhhvJ 	s   A! !A3c                     t        t        j                  j                  t        j
                  d      d      } 	 t        j                  |       }| j                          | j                          |S # | j                          w xY w)Nzsmall_down_arrow.pngr(   r)   r2   s     r5   getSmallDnArrowImager8   a   s[    "'',,y//1GH$OFhhv
LLNJ 	s   A1 1Bc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)		GCPWizardz2
    Start wizard here and finish wizard here
    c           	         || _         || _        t        j                         d   | _        t
        j                  d   | _        i | _        	 t        | j                  d      }|j                         D ]q  }|j                  dd      j                         }t        |      dk  r2|j                  dd      \  }}|j                         | j                  |j                         <   s 	 |j                          | j                  d   | _        | j                  d	   | _        d| _        d| _        d
ad| _        g | _        t/        j0                  |t2        j4                  t7        d            | _        t;        | j8                  |       | _        t?        | j8                  |       | _         tC        | j8                  |       | _"        | j<                  jG                  | j@                         | j@                  jI                  | j<                         | j@                  jG                  | jD                         | jD                  jI                  | j@                         | j<                  jK                          | j@                  jK                          | jD                  jK                          | j8                  jM                  | j<                         d}| j8                  jO                  | j<                        rC| jQ                         }|satS        | j                   t7        d             | jU                          n0tS        | j                   t7        d             | jU                          |r| jW                  d       tY        | j*                        | _-        | jW                  d       tY        | j                        | _.        | jZ                  | _,        t(        d
k(  rd
}ddt^        z  g}	nd}ddt^        z  g}	| jW                  d       ta        jb                  |	      \  }
}| jZ                  je                  ||	d|
ddd       | jW                  d       | jD                  jg                  th        d
         }th        d
   r8|r6|d   }|d   }	th        d
   }
| j\                  je                  ||	d|
ddd       nSth        d
   rJd
}ddth        d
   z  g}	ta        jb                  |	      \  }
}| j\                  je                  ||	d|
ddd       th        d   rJd}ddth        d   z  g}	ta        jb                  |	      \  }
}| j\                  je                  ||	d|
ddd       t3        jj                  d t2        j4                  tl        jn                  t2        jp                  |
      }ts        || j                  | t2        j4                  | jZ                  | j                   |
      }|ju                          |jw                          |jy                          |jz                  j}                          y | jU                          y # j                          w xY w)NGISDBASEGISRCr
r#      :LOCATION_NAMEMAPSETr%   zSetup for georectification)parentidtitleFzGeorectifying setup canceled.rD   messagesource)gisrctargetd.rastmap=%sr&   d.vectT      ?ltypecommandactivenamehiddenopacityrenderrT   typecmd)rD   rE   sizestylerF   )rD   gifacegrwizrE   r   lmgrrF   )?rD   _gifacegrassgisenvgrassdatabaser+   environtarget_gisrc
gisrc_dictr*   	readlinesreplacestriplensplitr1   currentlocationcurrentmapsetnewlocation	newmapsetmaptypesource_gisrcsrc_mapswizWizardr/   ID_ANY_r	   LocationPage	startpage	GroupPage	grouppageDispMapPagemappageSetNextSetPrevDoLayout	FitToPage	RunWizardOnWizFinishedr   Cleanup	SwitchEnvr   SrcMapTgtMapsrc_mapr
   GetLayerNameFromCmdAddLayerGetWebServiceLayerstgt_mapFramer   MAP_WINDOW_SIZEDEFAULT_FRAME_STYLE
GCPDisplayInitMapDisplayCenterOnScreenShow_mgrUpdate)selfrD   r]   flinekeyvaluesuccess
rendertypecmdlistrT   foundweb_service_layermapframegcpmgrs                  r5   __init__zGCPWizard.__init__p   s;   
 #\\^J7
 JJw/		T&&,A =||D"-335t9q=!ZZQ/
U/4{{}		,= GGI#?!__X6  
 jjbiiq1M/N
 &dkk48"4;;5"4;;5
 	t~~.t~~.t||,T^^,
 	!!dnn-
 
 ;;  0((*GQ7V5WXDKK3R1STLLN
 NN8$D$5$56DKNN8$D$5$56DK{{DH
 ("%
#X%78%
#X%78NN8$33G<KD%KK    !  NN8$ $ @ @ghFW @ Xx %6
 /v6
+E2x($$$#   %  " &
#X0A%AB#77@e$$$#   %  x  &
#X0A%AB#77@e$$$#   %  xx99..,,H  ||99KK[[F !!#!!#KKMKK LLNu GGIs   BX6 6Yc                    || _         || _        | j                   | j                  k(  r| j                  | j                  k(  ry|| j                  d<   || j                  d<   t        j                         | _        	 t        | j                  d      }| j                  j                         D ]"  }|j                  |d   dz   |d   z   d	z          $ 	 |j                          y
# j                          w xY w)a  Create environment to use for location and mapset
        that are the source of the file(s) to georectify

        :param location: source location
        :param mapset: source mapset

        :return: False on error
        :return: True on success
        FrB   rC   wmoder   z: r@   r?   T)rn   ro   rl   rm   rf   r
   GetTempfilerq   r*   itemswriter1   )r   locationmapsetr   r   s        r5   	SetSrcEnvzGCPWizard.SetSrcEnvC  s     $
  4 44$"4"44+3($*!!--/	T&&S1A--/ 9Q$a04789 GGI GGIs   :AC" "C4c                    | j                   | j                  k(  r| j                  | j                  k(  ry|dk(  r't	        | j
                        t        j                  d<   y|dk(  r&t	        | j                        t        j                  d<   y)z
        Switches between original working location/mapset and
        location/mapset that is source of file(s) to georectify
        FrK   r=   rI   T)	rn   rl   ro   rm   strre   r+   rd   rq   )r   grcs     r5   r   zGCPWizard.SwitchEnvg  sw      4 44$"4"44(?"%d&7&7"8BJJw  H_"%d&7&7"8BJJw    c                      y)NT r   s    r5   r   zGCPWizard.OnWizFinished{  s     r   c                 $    |j                          y)zLayer Manager focusN)Skipr   events     r5   
OnGLMFocuszGCPWizard.OnGLMFocus  s     	

r   c                 Z    | j                  d       | j                  j                          y)z%Return to current location and mapsetrK   N)r   r	   Destroyr   s    r5   r   zGCPWizard.Cleanup  s     
 	x r   N)
__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r5   r:   r:   k   s(    Qf"H(
r   r:   c                   8    e Zd ZdZd Zd Zd Zd Zd	dZd	dZ	y)
rw   zo
    Set map type (raster or vector) to georectify and
    select location/mapset of map(s) to georectify.
    c           	         t        j                  | |t        d             || _        | j                  j                  | _        d| _        d| _        t        j                  | t        j                  dt        d      z  t        d      t        d      gt        j                        | _        | j                  j                  | j                  t        j                  t        j                  z  t        j                   z  dd	d
       | j                  j                  t#        | t        j                  t        d            t        j$                  t        j&                  z  t        j                  z  dd       t)        | | j                        | _        | j                  j                  | j*                  t        j$                  t        j&                  z  t        j                  z  dd       | j                  j                  t#        | t        j                  t        d            t        j$                  t        j&                  z  t        j                  z  dd       t-        | | j                  d      | _        | j                  j                  | j.                  t        j$                  t        j&                  z  t        j                  z  dd       | j                  j1                  d       | j3                  t        j4                  | j6                  | j                         | j3                  t        j8                  | j:                  | j*                         | j.                  j3                  t        j<                  | j>                         | j3                  t@        jB                  | jD                         | j3                  t@        jF                  | jH                         y )Nz#Select map type and location/mapsetr#    %s zMap type to georectifyr%   r&   rD   rE   labelchoicesmajorDimension   r@   r@   r@      )flagborderposspanzSelect source location:rD   rE   r   r   r@   r   r   r   )rD   gisdbaser   r   zSelect source mapset:   r@   F)rD   r   setItemsr   r   r   )%
TitledPager   rv   rD   rc   
xylocationxymapsetr/   RadioBoxru   RA_SPECIFY_COLS
rb_maptypesizerAddALIGN_CENTERALLEXPANDr   
ALIGN_LEFTALIGN_CENTER_VERTICALr   cb_locationr   	cb_mapsetAddGrowableColBindEVT_RADIOBOX	OnMaptypeEVT_COMBOBOX
OnLocationEVT_TEXTOnMapsetrs   EVT_WIZARD_PAGE_CHANGINGOnPageChangingEVT_WIZARD_PAGE_CHANGEDOnEnterPager   r	   rD   s      r5   r   zLocationPage.__init__  s   D&!,Q*RS![[66 ++yy1566x[!H+.--
 	

OO266)BII5 	 	
 	

dryy:S8TU!9!99BFFB	 	 	
 *@R@RS

!9!99BFFB	 	 	
 	

dryy:Q8RS!9!99BFFB	 	 	
 &$"4"4u
 	

NN!9!99BFFB	 	 	
 	

!!!$
 			"//4>>4??C		"//4??D4D4DEBKK7		#..0C0CD		#--t/?/?@r   c                 4    |j                         dk(  rdayday)zChange map typer   r%   r&   N)GetIntrp   r   s     r5   r   zLocationPage.OnMaptype  s     <<>QGGr   c           	      H   |j                         | _        t        j                  t        j                  j                  | j                  | j                              }g | _        |D ]  }t        j                  j                  t        j                  j                  | j                  | j                  |            sVt        j                  j                  t        j                  j                  | j                  | j                  |d            s|dk7  s| j                  j                  |        d| _        t        j                  | j                         | j                  j                  dd       | j                  j!                  | j                         | j                  j#                  | j                         t%        j&                  t$        j(                        j+                         s3t%        j&                  t$        j(                        j-                  d       yy)z-Sets source location for map(s) to georectifyWIND	PERMANENTr   TN)	GetStringr   r+   listdirr,   r-   rc   
mapsetListisdirexistsappendr   r
   ListSortLowerinsertr   SetItemsSetStringSelectionr/   FindWindowById
ID_FORWARD	IsEnabledEnabler   r   tmplistitems       r5   r   zLocationPage.OnLocation  sa   //+ **RWW\\$*<*<dooNO 	1Dww}}T//$G''..T//$O ;&OO**40	1 $DOO,q+.0))$--8  /99;bmm,33D9 <r   c                 B   | j                   dk(  rt        t        d      |        y|j                         | _        t        j                  t
        j                        j                         s3t        j                  t
        j                        j                  d       yy)z+Sets source mapset for map(s) to georectifyr#   z:You must select a valid location before selecting a mapsetrD   NT)
r   r   rv   r   r   r/   r  r  r  r  r   s     r5   r   zLocationPage.OnMapset  sr    ??b QR )  /99;bmm,33D9 <r   Nc                    |j                         rE| j                  dk(  s| j                  dk(  r't        t	        d      |        |j                          y | j                  j                  | j                  | j                         y )Nr#   z@You must select a valid location and mapset in order to continuer	  )GetDirectionr   r   r   rv   VetorD   r   r   s     r5   r   zLocationPage.OnPageChanging  sh    T__%:dmmr>Q6  JJLdoot}}=r   c                 
   | j                   dk(  s| j                  dk(  r3t        j                  t        j                        j                  d       y t        j                  t        j                        j                  d       y )Nr#   FT)r   r   r/   r  r  r  r   s     r5   r   zLocationPage.OnEnterPage  sS    ??b DMMR$7bmm,33E:bmm,33D9r   N)
r   r   r   r   r   r   r   r   r   r   r   r   r5   rw   rw     s(    
DAN:2:>:r   rw   c                   >    e Zd ZdZd Zd Zd Zd Zd Zd
dZ	d
d	Z
y)ry   z;
    Set group to georectify. Create group if desired.
    c           	      
   t        j                  | |t        d             || _        | j                  j                  | _        g | _        d| _        d| _        d| _        dt        t        j                               z   | _        | j                  j                  t        | t         j"                  t        d            t         j$                  t         j&                  z  t         j(                  z  dd       t!        j*                  | t         j"                  | j
                  d	t         j,                  
      | _        | j                  j                  | j.                  t         j$                  t         j&                  z  t         j(                  z  dd       | j                  j                  t        | t         j"                  t        d            t         j$                  t         j&                  z  t         j(                  z  dd       t!        j0                  t         j2                        }t5        | t         j"                  t        d            | _        t5        | t         j"                  t        d            | _        |j                  | j6                  t         j:                  d       |j                  | j8                  t         j<                  d       | j                  j                  |t         j$                  t         j&                  z  t         j(                  z  dd       | j                  j                  t        | t         j"                  t        d            t         j$                  t         j&                  z  t         j(                  z  dd       t?        | t         j"                  dd	      | _         | j@                  jC                  | j                         | j                  j                  | j@                  t         j$                  t         j&                  z  t         j(                  z  dd       | j                  jE                  d       | jG                  t         jH                  | jJ                  | j.                         | jG                  t         jL                  | jN                  | j@                         | jG                  tP        jR                  | jT                         | jG                  tP        jV                  | jX                         | jG                  t         jZ                  | j                  j\                         | j8                  j_                          y )Nz$Select image/map group to georectifyr#   _georectzSelect/create group:r   r   r   r   i^  )rD   rE   r   r[   r\   r   zCreate group if none existsr   zCreate/edit group...zAdd vector map to group...r   r   r   Extension for output maps:r   rD   rE   r   r[   r   r   )0r   r   rv   rD   rc   	groupListr   r   xygroupr   r+   getpid	extensionr   r   r   r/   ru   r   r   r   ComboBoxCB_DROPDOWNcb_groupBoxSizer
HORIZONTALr   btn_mkgroup
btn_vgroupRIGHTLEFTr   ext_txtSetValuer   r   r   OnGroupr   OnExtensionrs   r   r   r   r   	EVT_CLOSEr   Hide)r   r	   rD   btnSizers       r5   r   zGroupPage.__init__&  s   D&!,R*ST![[66 $c"))+&66 	

dryy:P8QR!9!99BFFB	 	 	
 yyNN..
 	

MM!9!99BFFB	 	 	
 	

		3P1Q !9!99BFFB 	 	
 ;;r}}-!BIIQ/E-F
 !BIIQ/K-L
 	T%%BHHQ?T__2771=

!9!99BFFB	 	 	
 	

		3O1P !9!99BFFB 	 	
  t		)Tdnn-

LL!9!99BFFB	 	 	
 	

!!!$ 			"//4<<?		"++t//>		#..0C0CD		#--t/?/?@		",, 3 34 	r   c                 .    |j                         | _        y r  )r   r  r   s     r5   r&  zGroupPage.OnGroup  s    (r   c                    | j                   dk(  r| j                  j                         | _         t        | | j                         }|j	                          |j                          |j                         \  }}||j                         v r|| _         nd}|j                          | j                          | j                          y)z*Create new group in source location/mapsetr#   )rD   defaultGroupN)r  r  GetValuer   DisableSubgroupEdit	ShowModalGetSelectedGroupGetExistGroupsr   r   r   )r   r   dlggrss        r5   	OnMkGroupzGroupPage.OnMkGroup  s    <<2==113DLDLLA!$$&A##%%DLBr   c                 ^   | j                   dk(  r| j                  j                         | _         t        j                  j                  | j                  | j                  | j                  d      }t        j                  j                  |      rt        | t        j                  | j                  | j                  | j                  | j                         }|j                         t        j                  k7  ry|j                          | j!                          yt#        | t%        d             y)zAdd vector maps to groupr#   r&   )rD   rE   grassdbr   r   groupNzNo vector maps.rG   )r  r  r.  r+   r,   r-   rc   r   r   r   	VectGroupr/   ru   r0  ID_OK
MakeVGroupr   r   rv   )r   r   
vector_dirr3  s       r5   OnVGroupzGroupPage.OnVGroup  s     <<2==113DLWW\\

 77>>*%99**}}llC }}"((*NN$*;(<=r   c                 B    | j                   j                         | _        y r  )r$  r.  r  r   s     r5   r'  zGroupPage.OnExtension  s    ..0r   Nc                    |j                         r6| j                  dk(  r't        t        d      |        |j	                          y |j                         r7| j
                  dk(  r't        t        d      |        |j	                          y y y )Nr#   z<You must select a valid image/map group in order to continuer	  z9You must enter an map name extension in order to continue)r  r  r   rv   r  r  r   s     r5   r   zGroupPage.OnPageChanging  s|    DLLB$6ST JJLDNNb$8PQ JJL %9r   c           
         g | _         | j                  j                  d   | _        | j                  j                  d   | _        t
        j                  j                  t
        j                  j                  | j                  | j                  | j                  d            rt        j                  t
        j                  j                  | j                  | j                  | j                  d            }|D ]|  }t
        j                  j                  t
        j                  j                  | j                  | j                  | j                  d|            sb| j                   j                  |       ~ t        dk(  rP| j                  j                          | j                  t         j"                  | j$                  | j&                         nt        dk(  r| j                  j)                          | j                  t         j"                  | j$                  | j&                         | j                  t         j"                  | j*                  | j                         t-        j.                  | j                          | j0                  j3                  | j                          t5        | j                         dkD  ry| j6                  r>| j6                  | j                   v r&| j0                  j9                  | j6                         n/| j0                  j;                  d       | j                   d   | _        | j6                  dk(  s| j<                  dk(  r3t!        j>                  t         j@                        jC                  d       n2t!        j>                  t         j@                        jC                  d	       | j                  jE                  d
       y )NrB   rC   r9  r%   r&   r   r#   FTrI   )#r  rD   rf   r   r   r+   r,   r   r-   rc   r   r   rp   r!  r)  r   r/   
EVT_BUTTONr6  r   r   r>  r
   r   r  r   rj   r  r   SetSelectionr  r  r  r  r   r  s       r5   r   zGroupPage.OnEnterPage  s|    ++00A..x8 77==GGLL++T__dmmWU
 jj&&G
   
077==GGLL** NN))$/
0 hOO  "IIbmmT^^T5E5EF OO  "IIbmmT^^T5E5EFIIbmmT]]DOODDNN+t~~.t~~"|| >00>**1-#~~a0<<22!5bmm,33E:bmm,33D9 	h'r   r  )r   r   r   r   r   r&  r6  r>  r'  r   r   r   r   r5   ry   ry   !  s,    _B)">81"6(r   ry   c                   F    e Zd ZdZd Zd Zd Zd ZddZddZ	dd	Z
d
 Zy)r{   zk
    Select ungeoreferenced map to display for interactively
    setting ground control points (GCPs).
    c           	         t        j                  | |t        d             || _        t        d      | _        | j
                  j                  t        | t        j                  t        d            t        j                  t        j                  z  t        j                  z  dd       t        | t        j                  t        j                  t         d	      | _        | j
                  j                  | j"                  t        j                  t        j                  z  t        j                  z  dd
       | j
                  j                  t        | t        j                  t        d            t        j                  t        j                  z  t        j                  z  dd       t        | t        j                  t        j                  dd| j%                               | _        | j
                  j                  | j&                  t        j                  t        j                  z  t        j                  z  dd       | j
                  j                  t        | t        j                  t        d            t        j                  t        j                  z  t        j                  z  dd       t        | t        j                  t        j                  dd	      | _        | j
                  j                  | j(                  t        j                  t        j                  z  t        j                  z  dd       | j"                  j+                  t        j,                  | j.                         | j&                  j+                  t        j,                  | j0                         | j(                  j+                  t        j,                  | j2                         | j+                  t4        j6                  | j8                         | j+                  t4        j:                  | j<                         | j+                  t        j>                  | j                  j@                         y )Nz>Select maps to display for ground control point (GCP) creationz Map Display Web Service Layer(s)Select source map to display:r   r   r   r   FrE   r[   rY   updateOnPopupr   $Select target raster map to display:r   r%   rE   r[   rY   rH  
extraItemsr   $Select target vector map to display:r   r&   r   )!r   r   rv   rD   web_servc_lyrs_root_node_namer   r   r   r/   ru   r   r   r   r   r   DIALOG_GSELECT_SIZErp   srcselectionGetSelectTargetRasterExtraItemstgtrastselectiontgtvectselectionr   r   OnSrcSelectionOnTgtRastSelectionOnTgtVectSelectionrs   r   r   r   r   r(  r   r   s      r5   r   zDispMapPage.__init__
  s,   NO	
 -./Q-R*
 	

		3R1S !9!99BFFB 	 	
 #yy..
 	

!9!99BFFB	 	 	
 	

99>?
 !9!99BFFB 	 		
 !'yy..;;=!
 	

!!!9!99BFFB	 	 	
 	

99>?
 !9!99BFFB 	 		
 !'yy..!
 	

!!!9!99BFFB	 	 	
 	r{{D,?,?@""2;;0G0GH""2;;0G0GH		#..0C0CD		#--t/?/?@		",, 3 34r   c                 R   | j                   j                         at        dk(  r3t        j                  t        j
                        j                  d       n2t        j                  t        j
                        j                  d       	 t        dk(  rt        dd      }nt        dk(  rt        dd      }j                  d	k(  r]t        d
t        |j                               | j                  j                  j                         | j                  j                  _        yy#  Y yxY w)Source map to display selectedr#   FTr%   zg.regionzraster=src_mapr&   zvector=src_mapr   zreturncode = N)rO  r.  r   r/   r  r  r  rp   r   
returncodeprintr   rD   r   	GetRegionregion)r   r   ps      r5   rS  zDispMapPage.OnSrcSelectiono  s    
 ##,,.b=bmm,33E:bmm,33D9	 ("z+;<H$z+;<||q os1<<'89)-)B)B)D& !	s   
BD" "D&c                 F    | j                   j                         t        d<   y)rW  r%   N)rQ  r.  r   r   s     r5   rT  zDispMapPage.OnTgtRastSelection       !11::<r   c                 F    | j                   j                         t        d<   y)rW  r&   N)rR  r.  r   r   s     r5   rU  zDispMapPage.OnTgtVectSelection  r^  r   Nc                     |j                         r0t        dk(  r't        t        d      |        |j	                          y | j
                  j                  d       y )Nr#   z1You must select a source map in order to continuer	  rK   )r  r   r   rv   r  rD   r   r   s     r5   r   zDispMapPage.OnPageChanging  sJ     W]HIRV JJLh'r   c                 z   | j                   j                  t               t        dk(  rt        d| d| j                  j
                  j                  d      }|r!|j                         | j                  _        nt        | t        d      | j                  j
                  j                  z         y t        dk(  rV| j                  j                  }| j                  j                  d	   }| j                  j                  d
   }t        j                  j                  |||d| j                  j
                  j                  d      }t        d      | j                  j
                  j                  z  }	 t!        |      5 }|j#                         D ]G  }	|	j%                  d      }	t'        |	      dk  r#| j                  j                  j)                  |	       I 	 d d d        t'        | j                  j                        dk  rt        | |       y | j                   j,                  j/                  | j                  j                         | j                  j                  d   a| j                   j3                  t0               | j                  j5                  d       | j6                  j                  d       | j6                  j/                          | j8                  j                  d       | j8                  j/                          | j                  j5                  d       t0        dk(  r3t;        j<                  t:        j>                        jA                  d       y t;        j<                  t:        j>                        jA                  d       y # 1 sw Y   xY w# t*        $ r t        | |d       Y y w xY w)Nr%   i.groupTg)rD   readr9  flagszJNo maps in selected group <%s>.
Please edit group or select another group.rG   r&   rB   rC   r9  VREFr?   r@   F)rD   rH   showTracebackelementsr   rK   rI   r#   )!rO  SetElementListrp   r   rD   rz   r  
splitlinesrr   r   rv   rc   rf   r+   r,   r-   r*   rg   ri   rj   r   FileNotFoundErrortcpGetElementListr   r%  r   rQ  rR  r/   r  r  r  )
r   r   retrc   r   r   vgrpfileerror_messager   vects
             r5   r   zDispMapPage.OnEnterPage  s   
 	((1hkk++33C '*~~'7$E kk++33	4   KK55M//@J{{--h7H ww||%%--H A ++''//	0 	(^ :q ! :#zz$/t9q=$,,33D9	:: 4;;''(1,dM: 	,,dkk6J6J,K++&&q)""7+h',,X6,,.,,X6,,.h'b=bmm,33E:bmm,33D9;: : % dMOs+   3N  >ANN  NN   N:9N:c                     i }| j                   j                  j                         D ]6  }|j                  |v s|j                  |j                  d|t        |      <   8 |r|j                  |      S |S )aW  Get Map Display web service layer(s).

        :param ltype: map layer type
        :param name: map layer name

        :return: web service layer(s) dict
        {
            web_service_map_layer_name: {'type': ltype, 'cmd': [cmd list]},
           ...
        }
        :return: None when web service map layer name doesn't exist
        )rY   rZ   )rD   r`   GetLayerListrY   rZ   r   get)r   rQ   rT   layerslayers        r5   r   zDispMapPage.GetWebServiceLayers  sm     [[((557 	LEzzU".3jj%Ks5z"	L ::d##r   c                 V    | j                   | j                         j                         iS )z,Get select target raster widget extra items.)rM  r   keysr   s    r5   rP  z+DispMapPage.GetSelectTargetRasterExtraItems  s%    22D4L4L4N4S4S4UVVr   r  )wmsN)r   r   r   r   r   rS  rT  rU  r   r   r   rP  r   r   r5   r{   r{     s4    
c5J4==(R:h*Wr   r{   c                   T    e Zd ZdZdej
                   ed      ddg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d Zd/dZd Zd Zd Zd Zd Zd Zd0dZd Zd Zd Z d  Z!	 	 	 	 d1d!Z"d" Z#d# Z$d$ Z%d2d%Z&d& Z'd' Z(d( Z)d) Z*d* Z+d+ Z,d, Z- fd-Z.d. Z/ xZ0S )3GCPPanelz
    Manages ground control points for georectifying. Calculates RMS statistics.
    Calls i.rectify or v.rectify to georectify map.
    NzManage Ground Control Points)i  i,  gcpdispc
                 ~    | _         | _        t        d   dk(  rt        d   dk(  rd _        nd _        t	        j
                   | j                  ||||d       | _         j                  j                  d j                  	       _
         j                  j                  d j                  	       _         j                  j                  j                   fd
        j                  j                  j                   fd       d _         j                   j                    _         j                   j"                   _         j                   j$                   _         j                   j&                   _         j                   j(                   _         j                   j*                  d    _         j                   j*                  d    _         j                   j0                  j2                   _         j                   j4                   _         j                   j0                  j6                   _        d _        g  _        t<        j>                  jA                   j                    j,                   j.                  d j2                  d      t<        j>                  jA                   j                    j,                   j.                  d j2                  d      t<        j>                  jA                   j                    j,                   j.                  d j2                  d      t<        j>                  jA                   j                    j,                   j.                  d j2                  d      t<        j>                  jA                   j                    j,                   j.                  d j2                  d      d _!        t<        j>                  jE                   jB                  d         r0tG        jH                   jB                  d    jB                  d          d _%        d _&        d _'        d _(        d _)        d _*        d _+        g  _,         jX                  j[                  g d       d _.        d _/        d _0        d _1        d _2        d _3         ji                   j2                   j"                   j$                         d  _5         jl                  jo                  tp        jr                         _:        tw        ty                     }
tw        t{                     } jt                  j}                  |       _?         jt                  j}                  |
       _@         j                   _A        d j                  j                  d<    j                  j                  d   dk(   d j                  _C        tq        j                  d d!tp        j                  "       j                  _F         j                  j                  d#        j                   _A        d j                  j                  d<    j                  j                  d   dk(   d j                  _C        tq        j                  d d!tp        j                  "       j                  _F         j                  j                  d#        j                  r3 j                   _H         j                   _J         j                  d         j                   _H         j                   _J         j                  d         j                  tp        j                   j                          j                  tp        j                   j                          j                  tp        j                   j                          j                          y )$Nr%   r#   r&   FTGCPMapWindow)rD   r]   rF   r[   r   toolbarsrT   point)graphicsTypesetStatusFuncc                 >    j                  j                  | |      S r  )_onMouseLeftUpPointerSrcMapWindowxyr   s     r5   <lambda>z#GCPPanel.__init__.<locals>.<lambda>F      33D4E4Eq!L r   c                 >    j                  j                  | |      S r  )r  TgtMapWindowr  s     r5   r  z#GCPPanel.__init__.<locals>.<lambda>I  r  r   rB   rC   r9  POINTS
POINTS_BAKREFrf  TARGET)points
points_bakrgrpvgrprK   r  r  r@   nearestr           r   r  r  r  r  r  r  r  boxusepointerblackr   )colourwidthr\   cross)Ur^   r`   r   show_targetr   r   rD   r  RegisterGraphicsToDrawSetGCPSatuspointsToDrawTgtr  pointsToDrawSrcmouseLeftUpPointerconnectresizerc   rl   rm   rn   ro   rf   r   r   rz   r  rr   r  outname
VectGRListr+   r,   r-   filer   shutilr   gr_order	gr_methodclip_to_region	overwriteGCPcountfwd_rmserrorbkw_rmserrormapcoordlistr   highest_onlyshow_unusedhighest_key	rmsthreshrmsmeanrmssd	SetTargetitemDataMaplistGetImageListr/   IMAGE_LIST_SMALLilr    r6   r8   r   sm_dnsm_upmapwinmousezoomtypePenSOLIDpenSetNamedCursor	MapWindowr   r   OnZoomToMapr   r   EVT_ACTIVATEOnFocusEVT_SIZEOnSizeEVT_IDLEOnIdleSetSettings)r   rD   r]   r^   rE   rF   r[   r  r   r_   SmallUpArrowSmallDnArrows   `           r5   r   zGCPPanel.__init__  s    
8"wx'8B'>$D#D 	<<		
 
  $00GG 0@0@  H  
  $00GG 0@0@  H  
 	,,44L	
 	,,44L	

 !ZZ55#zz99!ZZ55::11--**//@

--h7zz++33

++--77 ggll"" '',,"" GGLL"" GGLL"" ggll""C)
	X 77>>$))H-.KK		(+TYY|-DE "#  
	
 !
t||T%9%94;M;MN ))(()<)<=&';'=>&';'=>WW[[.
WW[[.
 ''#*% % I- &&qI""7+'' $+% % I- &&qI""7+
 !..DN{{DHT"**;;
 			"//4<<0		"++t{{+		"++t{{+r   c                      y)zDisable GCP manager modeNr   r   s    r5   __del__zGCPPanel.__del__  s     	r   c                     t        | |       S )zCreate GCP List Control)rD   gcp)GCPListr   s    r5   CreateGCPListzGCPPanel.CreateGCPList  s     d--r   c                     | j                   S r  )r  r   s    r5   GetListCtrlzGCPPanel.GetListCtrl  s    yyr   c                     | j                   S r  )r  r   s    r5   GetMapCoordListzGCPPanel.GetMapCoordList         r   c                 2    | j                   | j                  fS r  )r  r  r   s    r5   GetSortImageszGCPPanel.GetSortImages  s    

DJJ''r   c                     | j                   S r  )r  r   s    r5   GetFwdErrorzGCPPanel.GetFwdError  r  r   c                     | j                   S r  )r  r   s    r5   GetBkwErrorzGCPPanel.GetBkwError  r  r   c                     | j                   j                          | j                  | _        | j                   j	                         }t        j                  | |       dg|z  | _        y )Nr@   )r  LoadDatar  r  GetColumnCountr   r   _colSortFlag)r   ncolss     r5   r   zGCPPanel.InitMapDisplay  sR    		  ,,		((*""4/C%Kr   c                    | j                   | j                  k(  r)| j                  | j                  k(  rt	        d| d|       y| j
                  j                  d       t	        d| |||       | j
                  j                  d       y)zJ
        Sets rectification target to current location and mapset
        zi.targetc)rD   re  r9  rI   )rD   r9  r   r   rK   N)rn   rl   ro   rm   r   r^   r   )r   tgroup	tlocationtmapsets       r5   r  zGCPPanel.SetTarget  su      4 44$"4"44z$cHJJ  *" JJ  *r   c           	          | j                   j                         dz   }| j                  j                  |ddddddg       | j                  j                         dk(  r| j                          yy)-
        Appends an item to GCP list
        r@   r  r   N)r  
AddGCPItemr  r   statusbarManagerGetModeStatusbarUpdate)r   r   keyvals      r5   AddGCPzGCPPanel.AddGCP!  su     %%'!+ 	  
	
   ((*a/  " 0r   c                    | j                  d      }| j                  j                         |k  rt        | t	        d      |z         y| j                  j                         }| j                  |= t        |t        | j                              D ]u  }| j                  j                  d|dz         }|| j                  |   d<   | j                  j                  |dt        |             | j                  j                  ||       w | j                  j                         dkD  r(| j                  j                  | j                  j                         k  r?| j                  j                  | j                  j                        | j                  _        nj| j                  j                         dz
  | j                  _        | j                  j                  | j                  j                        | j                  _        | j                  j!                  | j                  j                  t"        j$                  t"        j$                         n0t"        j&                  | j                  _        d| j                  _        | j)                          | j*                  j-                         dk(  r[| j/                          | j                  j                  dkD  r1| j*                  j1                  d| j                  j                         yyy)	z3
        Deletes selected item in GCP list
        Nz.At least %d GCPs required. Operation canceled.rG   r  r@   r   r   gotoGCP)	OnGROrderr  GetItemCountr   rv   DeleteGCPItemr  rangerj   FindItemSetItemr   SetItemDataselectedGetItemDataselectedkeySetItemStater/   LIST_STATE_SELECTED	NOT_FOUNDUpdateColoursr  r  r  SetProperty)r   r   minNumOfItemsr   newkeyindexs         r5   	DeleteGCPzGCPPanel.DeleteGCP7  s>    t,99!!#}4JK 
 ii%%'c" CT%6%6!78 	1FII&&r6A:6E+1Df%a(IIeQF4II!!%0		1 99!!#a'yy!!DII$:$:$<<(,		(=(=dii>P>P(Q		%%)YY%;%;%=%A		"(,		(=(=dii>P>P(Q		%II""		""B$:$:B<R<R "$DII$&DII!  ((*a/  "yy$$q(%%11)TYY=R=RS ) 0r   c                    | j                   j                         }| j                   j                  |      }t        dd      D ]  }| j                   j	                  ||d       ! | j                   j	                  |dd       | j                   j	                  |dd       | j                   j                  |d       |ddddddg| j                  |<   y)	zP
        Clears all values in selected item of GCP list and unchecks it
        r@   r   0.0r#      Fr  N)r  GetSelectedr  r  r  	CheckItemr  )r   r   r
  r   is        r5   ClearGCPzGCPPanel.ClearGCPe  s     		%%'ii##E*q! 	/AIIeQ.	/		%B'		%B'		E5) #&sCc3!D#r   c           	         t        j                  ddd      | _        t        j                  ddd      | _        ddd	dd
}t        j                  ddd      }t	        j
                  |      D ]  \  }}t        j                  dd|      }| j                  j                  |      j                  t        j                  |d   |d   |d   d             | j                  j                  |      j                  t        j                  |d   |d   |d   d             | j                  j                  |      j                  |       | j                  j                  |      j                  |        t        j                  ddd      }| j                  j                  dt        |             | j                  j                  dt        |             | j                         }|j!                  t        |      dz          i }d|d<   ||d<   | j                  j                  d|       | j                  j                  dt#        |             t        j                  ddd      | _        y)z#Sets settings for drawing of GCP's.gcpmanrmshighestonlyr9  r   subkeysymbolunuseddefaulthighestr   )colorhcolorscolorucolorr  r   r@   r      r[   TrS   fonttextmapr  N)r   Getr  r  six	iteritemsr  GetPen	SetColourr/   Colourr  SetWidthSetPropertyValintGetFontSetPointSizer   r  )	r   colourswpxkvcolspxr"  textProps	            r5   r  zGCPPanel.SetSettingsv  s   (,,m
 (++

  	
 X8GLMM'* 
	9DAq""xJC  ''*44		#a&#a&#a&#6   ''*44		#a&#a&#a&#6   ''*33C8  ''*33C8
	9 X8FK++FCH=++FCH=||~#c(Q,'!++FH=++FDNC &))eKXr   c                 &   | j                   j                  |      }|dz  }| j                   j                  |dz
        s4d}| j                  s|j	                  dd       nj|j	                  dd       nW|j	                  dd       | j
                  r|| j                  k(  rd}n'd}n$| j                  |   d   | j                  kD  rd}nd}|| j                   j                  k(  rd	}|j	                  d
t        |             |j	                  d|       y)zWBefore GCP is drawn, decides it's colour and whether it
        will be drawn.
        r@   r  hideTFr  r  r   r   r   penNameN)r  r  IsItemCheckedr  r,  r  r  r  r  r  r   )r   r  	itemIndexr   wxPens        r5   r  zGCPPanel.SetGCPSatus  s     ii##I. 	Q	yy&&sQw/E####FD1##FE2 .   0 00%E%E$$S)!,t~~=%E%E		---EGS^4Iu-r   c                    | j                   j                         }|t        j                  k(  ry|d   }|d   }| j                   j	                  |      }|r| j
                  | j                  k(  rt        d      }	nt        d      }	t        j                  | t        d      t        d      |	t        |      t        |      t        |      dz  t        j                  t        j                  z  t        j                  z  	      }
t        j                  d
k(  r| j
                  j                          |
t        j                   k(  ry|dk(  r| j                   j#                  |dt        |             | j                   j#                  |dt        |             |d   | j$                  |   d<   |d   | j$                  |   d<   | j&                  j)                  |dz
        j+                  ||g       n|dk(  r| j                   j#                  |dt        |             | j                   j#                  |dt        |             |d   | j$                  |   d<   |d   | j$                  |   d<   | j,                  j)                  |dz
        j+                  ||g       | j                   j#                  |dd       | j                   j#                  |dd       d| j$                  |   d<   d| j$                  |   d<   y)zInserts coordinates from file, mouse click on map, or
        after editing into selected item of GCP list and checks it for
        use.
        Nr   r@   rI   rK   zSet GCP coordinateszQSet %(coor)s coordinates for GCP No. %(key)s? 

East: %(coor0)s 
North: %(coor1)s)coorr   coor0coor1rD   captionrH   r\   ntr   r      r   0r  r  )r  r  r/   r  r  r  r  rv   
MessageBoxr   ICON_QUESTIONYES_NOCENTREr+   rT   SetFocusNOr  r  r  GetItem	SetCoordsr  )r   	coordtypecoordmapdispconfirmr
  coord0coord1r   currlocro  s              r5   
SetGCPDatazGCPPanel.SetGCPData  s   
 		%%'BLL qqii##E*~~!2!22H+H+--/0' $s8 [ [	
 &&2RYY>C$ ww$'')bee| IIeQF4IIeQF4(-aDc"1%(-aDc"1%  ((q1;;VV<LM("IIeQF4IIeQF4(-aDc"1%(-aDc"1%  ((q1;;VV<LM		%C(		%C($'#q!$'#q!r   c           
      h   d| _         	 t        | j                  d   d      }|j                  d       |j                  d       |j                  d| j                  z   dz          |j                  d	| j
                  z   dz          |j                  d
       |j                  d       |j                  d       t        | j                  j                               D ]  }| j                  j                  |      rd}| xj                   dz  c_         nd}| j                  j                  |d      j                         }| j                  j                  |d      j                         }| j                  j                  |d      j                         }| j                  j                  |d      j                         }|j                  |dz   |z   dz   |z   dz   |z   dz   |z   dz           	 |j#                          |rbt%        j&                  | j                  d   | j                  d          | j(                  j+                  t        d      | j,                  z         yy# t        $ rE}	t        | t        d      d| j                  d   dt        j                   |	       Y d}	~	yd}	~	ww xY w)zSMake a POINTS file or save GCP coordinates to existing
        POINTS file
        r   r  r   r   z# Ground Control Points File
z# 
z# target location: r?   z# target mapset: z#	source		target		status
z)#	east	north	east	north	(1=ok, 0=ignore)
zI#-----------------------     -----------------------     ---------------
1r@   rE  r   r   rD   z     zWriting POINTS file failed <>. rG   Nr  z POINTS file saved for group <%s>)r  r*   r  r   rl   rm   r  r  r  r:  rL  GetTextIOErrorr   rv   r+   linesepr1   r  r   r`   WriteLogr  )
r   r   r   r
  checkrR  rS  coord2coord3errs
             r5   SaveGCPszGCPPanel.SaveGCPs  sm    /	TYYx(s3AGG45GGFOGG)D,@,@@4GHGG'$*<*<<tCDGG56GGEFGG\ tyy5578 99**51EMMQ&ME**5!4<<>**5!4<<>**5!4<<>**5!4<<>  	
     	H 	
	 KK		(+TYY|-DELL!!!$F"G$,,"VW !  	 23IIh'JJ	 	s   G$I# #	J1,;J,,J1c           
         d| _         | j                  }| j                  }|st        | t	        d             |st        | t	        d             	 t        | j                  d   d      }d}|j                         D ]  }|d   dk(  s|dk(  r|j                  d	d      j                         }t        t        t        |j                                     }|d
   dk(  rd}| xj                   dz  c_         nd}| j                  d       | j                  d|d   |d   f|       | j                  d|d   |d   f|       | j                  j!                         }|t"        j$                  k7  r| j                  j'                  ||       |dz  } 	 |j/                          |dk(  r!t1        d      D ]  }
| j                  d        | j3                         r'| j5                  | j6                  | j8                         yy# t(        $ rE}	t        | t	        d      d| j                  d   dt*        j,                  |	       Y d}	~	yd}	~	ww xY w)zJ
        Reads GCPs and georectified coordinates from POINTS file
        r   zsource mapwin not definedrG   ztarget mapwin not definedr  r>   #r#   r?   rD  r@   TFN)r   rI   rK   r   r   zReading POINTS file failedrY  rZ  )r  r  r  r   rv   r*   r  rg   rh   ri   r  r$  floatrk   r  rU  r  r/   r  r  r\  r+   r]  r1   r  CheckGCPcountRMSErrorr  r  )r   sourceMapWintargetMapWinr   GCPcntr   coordsr_  r
  rb  r  s              r5   ReadGCPszGCPPanel.ReadGCPsB  s   
 (((($*E(FG$*E(FG"	TYYx(#.AF 7c>TRZ||D"-335c%67!9> EMMQ&M!E$'6!9fQi*@,O6!9fQi*@,O		--/BLL(II''u5!#@ 	
	Q;1X "D!" MM$,,6  )  	 23IIh'JJ	 	s   D?G? ?	I;IIc                 F   t        j                  | j                  d   | j                  d          g | _        | j                  j	                  g d       | j
                  j                          | j                  | _        | j                  dk7  r%| j
                  j                  | j                         dg| j
                  j                         z  | _        | j                  }|j                  dd       | j                  r | j                  }|j                  dd       yy)	zReload data from filer  r  r  r  r@   FrW   renderVectorN)r  r   r  r  r   r  r  r  _colClearColumnImager  r  r  	UpdateMapr  r  r   r   ri  rj  s       r5   
ReloadGCPszGCPPanel.ReloadGCPs  s     	DIIl+TYYx-@A   
	
 			,,99?II&&tyy1C$))":":"<< ((e%@,,L""%e"D r   c                      y r  r   r   s     r5   r  zGCPPanel.OnFocus  s     	r   c                     || j                   k(  rd}nd}||f}| j                  ||| d       |j                  dd       y )NrI   rK   T)rQ  Fro  )r  rU  rs  )r   	mapWindowr  r  rN  rO  s         r5   r  zGCPPanel._onMouseLeftUpPointer  sJ    ))) I IA	5$=5u=r   c                     | j                  | j                  | j                         | j                  }|j	                  dd       | j
                  r | j                  }|j	                  dd       yy)z$
        RMS button handler
        Fro  N)rh  r  r  r  rs  r  r  rt  s       r5   OnRMSzGCPPanel.OnRMS  sd     	dllDMM2((e%@,,L""%e"D r   c                    | j                   dk  r| j                  dk(  s<| j                   dk  r| j                  dk(  s| j                   dk  r6| j                  dk(  r'|r$t        | t        d      | j                  z         yy
y	)z
        Checks to make sure that the minimum number of GCPs have been defined and
        are active for the selected transformation order
        r   r@   r  r   
   zInsufficient points defined and active (checked) for selected rectification method (order: %d).
3+ points needed for 1st order,
6+ points for 2nd order, and
10+ points for 3rd order.rG   FTN)r  r  r   rv   )r   msgs     r5   rg  zGCPPanel.CheckGCPcount  s     ]]Q4==A#5!dmmq&8"t}}'94 mm$
   r   c           	         |dk(  r| j                   j                  d       t        j                  dd| j                  d      j                  d      }| j                   j                  d       g }|r|D ]q  }|s|j                  d	      d
   | j                  z   }t        j                  |d| j                        }|d   sO|j                  dj                  |d                s dj                  |      }nv| j                   j                  d       t        j                  | j                  d| j                        }| j                   j                  d       dj                  |d         }d   r|s|t        j                  | j                         t!        dj                  |            t!        d      t        j"                  t        j$                  z  t        j&                  z        }|S yy)zGet overwrite confirm dialog

        :param str maptype: map type
        :param bool overwrite: overwrite

        :return

        object: overwrite dialog

        None: it isn't necessary to display the overwrite dialog
        r%   rI   rb  glT)re  r9  quietr?   rK   @r   cell)rT   elementr   rT   z<{}>z, r&   z?The {map_type} map {map_name} exists. Do you want to overwrite?)map_typemap_namez
Overwrite?)rH   rB  r\   N)r^   r   ra   read_commandr  rk   r  	find_filerm   r   formatr-   r  r/   MessageDialog	GetParentrv   rH  YES_DEFAULTrG  )	r   rp   r  maps
found_mapsr$  r  r   overwrite_dlgs	            r5   _getOverWriteDialogzGCPPanel._getOverWriteDialog  s    hJJ  *%%ll	
 eDk  JJ  *J 	LC#&99S>!#4t~~#E %!)$*#'#5#5!
 !=&--fmmE&M.JK	L  99Z0JJ  *OO\\ ))E
 JJ  *}}U6]3H=,, 006!(!) 17 1 ,ii"..023C3CCM !  "+=r   c                    | j                  d       | j                  d      syt        dk(  rF| j                  t        | j                        }|rE|j                         t        j                  k(  s|j                          y|j                          d}n| j                  }| j                  j                  d       | j                  rd}nd}t        j                  t        d	      | 
      }t        j                         j                          t!        d| dd| j"                  | j$                  | j&                  | j(                  ||
      \  }}~|dk7  r9t+        |t,        j.                         nt        dk(  r| j                  j                  d       t1        | j2                  d         }g }		 |j5                         D ]3  }
|
j7                  d      }
t9        |
      dk  r#|	j;                  |
       5 	 |j=                          |	D ]  }
t?        |
jA                  d      d         | j$                  z   | _!        | j                  t        | j                        }|rF|j                         t        j                  k(  s|j                           y|j                          d}n| j                  }| jD                  jG                  t        d      |
z  tH        jJ                         dx}}t        j                  t        d      |
z  | 
      }t        j                         j                          t!        d| dd|
| jB                  | j"                  | j&                  |	      \  }}~|dk7  set+        |t,        j.                          | j                  j                  d       y# |j=                          w xY w)zM
        Georectifies map(s) in group using i.rectify or v.transform
        NTr}  r%   )rp   r  rI   acaz!Rectifying images, please wait...r	  z	i.rectify)	rD   getErrorMsgr  r9  r  ordermethodre  r  r   )r  r&   r  r?   r@   r  zTransforming <%s>...)r#  notificationr#   z*Rectifying vector map <%s>, please wait...z	v.rectify)rD   r  r  inputoutputr9  r  r  rK   )&rc  rg  rp   r  r  r0  r/   ID_YESr   r^   r   r  BusyInforv   GetAppYieldr   r  r  r  r  rY  sysstderrr*   r  rg   ri   rj   r   r1   r   rk   r  r`   r^  r   MAKE_VISIBLE)r   r   r  r  re  busyro  r}  r   vectlistrr  s              r5   	OnGeorectzGCPPanel.OnGeorect  s,   
 	d!!d!+h 44.. 5 M $..0BII=!))+%%' 	 NN	JJ  *"";;q!DEdSDIIK! ll..mm~~#HC  axc

+  JJ  * TYYv&'AHKKM *D::d+D4y1} OOD)	* 	 ! )0"4::c?1#56G $ 8 8#"nn !9 ! !(224		A%--/!))+ $I $I%%12T9!-!:!: &  c{{BCdJSW 		!!#% $<<,,--'
S  !8#CJJ/S)0V 	

X&] 	s   5AN- -N?c                    t         dk(  ry|d   }|dk(  rG| j                  j                  | j                         t	        dt        | j                        z          y| j                  j                  t        d      | j                  z         y)zPrint final messager%   NrX  r   z*****vector list = z*Georectification of vector map <%s> failed)	rp   r  r   r  rY  r   r`   
WriteErrorrv   )r   kargsrX  s      r5   OnGeorectDonezGCPPanel.OnGeorectDone  sq     h<(
?OO""4<<0'#doo*>>?LL##>?$,,Nr   c                     t        | | j                  t        j                  t	        d             }|j                         t        j                  k(  r	 |j                          y)zGCP Manager settings)rD   r]   rE   rF   N)GrSettingsDialogr`   r/   ru   rv   r0  r;  r   )r   r   r3  s      r5   
OnSettingszGCPPanel.OnSettings  sF    <<yy*+	
 ==?bhh&r   c                    d}d| _         d}t        | j                  j                               D ]3  }| j                  j	                  |      r| j                  j                  |      }| j                  |   d   }	| j                  r<| j                  j                  |t        j                         ||	k  s|	}|| _         |}| j                  dkD  s|	| j                  kD  r+| j                  j                  |t        j                         | j                  j                  |t        j                         
| j                  j                  |t        j                         6 | j                  r/|dkD  r*| j                  j                  |t        j                         | j                  }
|
j                  ||       | j                  r | j                   }|j                  ||       yy)zupdate coloursr  r   r   ro  N)r  r  r  r  r:  r  r  r  SetItemTextColourr/   BLACKr  REDr  rs  r  r  )r   	srcrendersrcrenderVector	tgtrendertgtrenderVectorhighest_fwd_errhighest_idxr
  r   fwd_errri  rj  s               r5   r  zGCPPanel.UpdateColours  s    4991134 	=Eyy&&u-ii++E2++C03$$II//rxx@&0*1+.(&+^^a'/		33E266B		33E288D		++E288<#	=& 3!6II''RVV<((ioN,,L"")/"R r   c                    t        j                  | t        d      t        d      t         j                  t         j                  z  t         j
                  z  t         j                  z        }|t         j
                  k7  r[|t         j                  k(  r| j                  d       no|t         j                  k(  r\t        j                  j                  | j                  d         r0t        j                  | j                  d   | j                  d          t        j                  j                  | j                  d         r"t        j                   | j                  d          | j"                  j%                          | j&                  j%                          | j(                  j+                          | j,                  j/                          | j1                          yy)zQuit georectifierzQuit GCP ManagerzSave ground control points?rA  Nr  r  )r/   rF  rv   rG  rH  CANCELrI  YESrc  rK  r+   r,   r   r  r  r   unlinkr   Cleanr   r^   r   r   UnInitr   )r   r   ro  s      r5   OnQuitzGCPPanel.OnQuit  s.   mm()34""RYY.:RYYF	
 "))bff}d#77>>$))L"9:KK		, 789LMww~~dii56		$))L12KKKKJJ IILLN# r   c                 .   |r|j                         dz   | _        | j                  j                         }|}| j                  dk(  rd}n(| j                  dk(  rd}d|z
  }n| j                  dk(  rd}t	        ||z
        D ]  }| j                  d        |S )z=
        sets transformation order for georectifying
        r@   r   r   r  r|  N)r   r  r  r  r  r  )r   r   
numOfItemsr  diffr  s         r5   r  zGCPPanel.OnGROrder  s     !LLNQ.DMYY++-
"==AM ]]aMz>D ]]aM }z12 	AKK	 r   c                    | j                  d       | j                  d      sy| j                  j                  d       t	        d| d||      }| j                  j                  d       |r|j                         }nt        | t        d      	       yt        t        j                  d
dd            }d}d}d}d}	d}
d| _        d}t        | j                  j                               D ]  }| j                  j                  |      }| j                  j!                  |      r||   j#                         \  }}| j                  j%                  |d|       | j                  j%                  |d|       t        |      | j&                  |   d<   t        |      | j&                  |   d<   | j                  j)                  |t*        j,                         | j.                  r"|
t        |      k  rt        |      }
|| _        |}|t        |      dz  z  }|t        |      dz  z  }|	t        |      z  }	|dz  }P| j                  j%                  |dd       | j                  j%                  |dd       d| j&                  |   d<   d| j&                  |   d<   | j                  j)                  |t*        j,                          |dkD  rF|	|z  | _        || j0                  dz  z
  dz  | _        | j0                  || j2                  z  z   | _        nd| _        d| _        d| _        | j.                  r0|
dkD  r+| j                  j)                  |t*        j6                         n|dkD  r| j4                  dkD  r| j.                  st        | j                  j                               D ]  }| j                  j!                  |      s| j                  j                  |      }| j&                  |   d   | j4                  kD  sZ| j                  j)                  |t*        j6                          t9        ||z  dz  d      | _        t9        ||z  dz  d      | _        | j                  j?                          y)z
        Uses m.transform to calculate forward and backward error for each used GCP
        in POINTS file and insert error values into GCP list.
        Calculates total forward and backward RMS error for all used points
        NTr  rI   m.transform)rD   rd  r9  r  rK   z?Could not calculate RMS Error.
Possible error with m.transform.rG   r  r  sdfactorr  r   r  r   r  r   r@   r#   g      ?rD  ) rc  rg  r^   r   r   rk  r   rv   rf  r   r%  r  r  r  r  r  r:  rk   r  r  r  r/   r  r  r  r  r  r  roundr  r  ResizeColumns)r   r  r  ro  errlistr  r  sumsq_fwd_errsumsq_bkw_errsum_fwd_errr  r  r
  r   r  bkw_errs                   r5   rh  zGCPPanel.RMSError  s    	d !!d!+ 	

X&$T
 	

X&nn&G7  ))eJWX4991134 	=E))''.Cyy&&u-#*8#4#:#:#< 		!!%G4		!!%G4,1'N!!#&q),1'N!!#&q)		++E288<$$&w7*/.+.(&+w1!44w1!44uW~-A		!!%B/		!!%B/,/!!#&q),/!!#&q)		++E288<1	=6 a<&1DL'$,,/9cADJ!\\Htzz,AADNDNDLDJ3!6II''RVV<\dnnq09J9Jtyy5578 C99**51))//6C((-a04>>A		33E266B	C "=8#;"CQG!=8#;"CQG		!r   c           
         t        j                         }ddddd}	 t        |d      }|j                  t	        |d         dz   t	        |d         z   dz          |j                  t	        |d         dz   t	        |d	         z   dz          |j                  t	        |d         dz   t	        |d         z   dz          |j                  t	        |d         dz   t	        |d	         z   dz          |j                          | j                  d        | j                  }d
| _        | j                  d      s|| _        y || _        | j                  j                  d       |dk(  rt        d| d| j                  d
d|      }n"|dk(  rt        d| d| j                  d
dd|      }t        j                  |       | j                  j                  d       r|j                         }nt!        | t#        d             y |d   j%                         \  }	}
t'        |	      }t'        |
      }||d<   ||d	<   ||d<   ||d<   t)        d
d      D ]c  }||   j%                         \  }	}
t'        |	      }t'        |
      }||d   k  r||d<   ||d   kD  r||d<   ||d	   k  r||d	<   ||d   kD  s_||d<   e |S # j                          w xY w)Nr  )nr5  er   r   r   r  rX  r  r?   r5  r@   Tr  rI   r  dst)rD   rd  r9  r  r  rl  rK   r>   src)rD   rd  r9  r  re  r  rl  zACould not calculate new extends.
Possible error with m.transform.rG   r   rD  )r
   r   r*   r   r   r1   rc  r  rg  r^   r   r   r  r+   r  rk  r   rv   rk   rf  r  )r   r[  r$  
coord_filenewregr   r  ro  r  r  r  fefnr  s                 r5   GetNewExtentzGCPPanel.GetNewExtente  s   &&(
	
	Zc*AGGCs$s*S-==DEGGCs$s*S-==DEGGCs$s*S-==DEGGCs$s*S-==DEGGI 	d!!d!+!DM 	

X&(?ll!C H_ll!	C 			*

X&nn&G7  qz!11X1Xssssq! 	!A1:##%DAqqBqBF3K sF3K sF3K sF3K s	! ] GGIs   CJ4 4Kc                 <    | j                   j                  d       y)zShow GCP Manager manual pagez	wxGUI.gcp)entryN)r`   Helpr   s     r5   OnHelpzGCPPanel.OnHelp  s    ,r   c                 Z   | j                   j                         dk(  r#| j                  | _        | j                  | _        n"| j                  | _        | j                  | _        | j                  | j                         t        j                  dk(  r| j                  j                          y y )Nr   rC  )	activemapGetSelectionr  r  r   r   r  r   UpdateActiver+   rT   rJ  r   s     r5   OnUpdateActivezGCPPanel.OnUpdateActive  sy    >>&&(A-!..DN{{DH!..DN{{DH$..)77d?NN##% r   c                 J   | j                         j                  dt        | j                  j                        dkD         | j
                  j                         || j                  k(  k7  r(| j
                  j                  || j                  k(         | j                          y )Nzoombackr@   enable)
GetMapToolbarr  rj   r  zoomhistoryr  r  r  rC  r  )r   wins     r5   r  zGCPPanel.UpdateActive  s    ##DNN$>$> ?! C 	$ 	
 >>&&(SD4E4E-EFNN''t/@/@(@Ar   c                    |d   | j                   j                  d<   |d   | j                   j                  d<   |d   | j                   j                  d<   |d   | j                   j                  d<   | j                  j                  | j                   j                  d   | j                   j                  d   | j                   j                  d   | j                   j                  d          | j                   j                  d   dk(  r|d   dkD  rd|d<   |d   dk  rd|d<   |d   |d   |d   z
  d	z  z   }|d   |d   |d   z
  d	z  z   }|| j                   j                  d
<   || j                   j                  d<   |d   |d   z
  | j                   j
                  z  | j                   j                  d<   |d   |d   z
  | j                   j                  z  | j                   j                  d<   | j                   j                          | j                  j                  | j                   j                  d   | j                   j                  d   | j                   j                  d   | j                   j                  d          | j                  j                  du rd| j                  _        | j                  j                          | j                          y)z Adjust map window to new extentsr  r5  r  r   projllg     V@g     Vr   center_eastingcenter_northingewresnsresFTN)r   r[  r  ZoomHistoryprojinfor  heightAlignExtentFromDisplay	redrawAllrs  r  )r   r  cecns       r5   	AdjustMapzGCPPanel.AdjustMap  sO     &c{%c{%c{%c{""HHOOC HHOOC HHOOC HHOOC 		
 88V$,c{T!"sc{U"#sC[F3K&+5::C[F3K&+5:: -/()-/)*$*3K&+$=#O $*3K&+$=#P '')""HHOOC HHOOC HHOOC HHOOC 		
 >>##u,'+DNN$  "r   c                 $   | j                   | j                  k(  s=| j                  | _         | j                  | _        | j	                  | j                         | j                  | j                  j                  d      }|r| j                  |       yy)z;Set target map window to match extents of source map windowrI   N)	r  r  r   r   r  r  r   r[  r  r   r   r  s      r5   OnZoomToSourcezGCPPanel.OnZoomToSource	  t     ~~!2!22!..DN{{DHd//0 ""4;;#5#5x@NN6" r   c                 $   | j                   | j                  k(  s=| j                  | _         | j                  | _        | j	                  | j                         | j                  | j                  j                  d      }|r| j                  |       yy)z;Set source map window to match extents of target map windowrK   N)	r  r  r   r   r  r  r   r[  r  r  s      r5   OnZoomToTargetzGCPPanel.OnZoomToTarget	  r  r   c                 *   t        j                         }t               }t        j                  |t         j                  t        d            }|j                  |       | j                  t         j                  | j                  |       t        j                  |t         j                  t        d            }|j                  |       | j                  t         j                  | j                  |       | j                  |       |j                          y)zPopup Zoom menuz'Adjust source display to target displayz'Adjust target display to source displayN)r/   GetMousePositionr   MenuItemru   rv   
AppendItemr   EVT_MENUr  r  	PopupMenur   )r   r   r  zoommenu
zoomsource
zoomtargets         r5   OnZoomMenuGCPzGCPPanel.OnZoomMenuGCP,	  s    ##%6 [[bii#L!M

 	J'		"++t22J?[[bii#L!M

 	J'		"++t22J? 	x r   c                 ^    t        j                         | _        t        t        |   |       y)z9Adjust Map Windows after GCP Map Display has been resizedN)ra   clockr  superr   r  )r   r   	__class__s     r5   r  zGCPPanel.OnSizeC	  s!     kkmh$U+r   c                 B   | j                         r| j                  re| j                  dz   t        j                         k  r@| j                  j                         \  }}| j                  j                         \  }}||z   dz  }| j                  rC| j                  j                  d      j                          | j                  j                          | j                  j                  d      j                  ||f       | j                  j                  d      j                  ||f       | j                  r)| j                  j                  d      j                          | j                  j                          d| _        y| j                  r|j                          y)z+GCP Map Display resized, adjust Map Windowsg?r   rK   rI   FN)r  r  ra   r  r  GetSizer  r  r   GetPaner)  r   BestSizer   RequestMore)r   r   srcwidth	srcheighttgtwidth	tgtheights         r5   r  zGCPPanel.OnIdleI	  s<   {{t{{S05;;=@&*&7&7&?&?&A#)&*&7&7&?&?&A#)$x/14##II%%h/446II$$&		!!(+44h	5JK		!!(+44h	5JK##II%%h/446		  "# 	 !!#r   )NF)F)FFFFr  )1r   r   r   r   r/   ru   rv   r   r  r  r  r  r  r  r  r   r  r  r  r  r  r  rU  rc  rm  ru  r  r  rz  rg  r  r  r  r  r  r  r  rh  r  r  r  r  r  r  r  r  r  r  __classcell__)r  s   @r5   r|  r|    s    99./M^.!(!!(+,#,,T\E"+YZ!.F:(|;X|=7~ ED
>
E49!vr'h   &SP<8\"|bH-&,\##.,r   r|  c                       e Zd ZdZd Zy)r   z5Map display for wrapping map panel with frame methodsc                    t        j                  | f|||||||d| |j                  t        j                  t
        j                  j                  t        j                  d      t        j                               |j                  t        j                  | j                         | j                  j                  | j                   t        j"                  t        j$                  f       | j'                          t        j(                  t        j*                        }	|	j-                  | dt        j.                         |j1                  |	       |j3                          y )N)rD   r]   r^   rE   r_   r   rF   zgrass_map.icor@   )
proportionr   )r|  r   SetIconr/   Iconr+   r,   r-   r   ICONDIRBITMAP_TYPE_ICOr   r(  r  shortcuts_tabler   OnFullScreenACCEL_NORMALWXK_F11_initShortcutsr  VERTICALr   r   SetSizerLayout)
r   rD   r]   r^   rE   r_   r   rF   kwargsr   s
             r5   r   zGCPDisplay.__init__a	  s    
	

	
 
	
 	GGY..@"BTBT	
 	BLL$++. 	##T%6%6$TU BKK(		$1299	5r   N)r   r   r   r   r   r   r   r5   r   r   ^	  s
    ?r   r   c                       e Zd Zej                  ej
                  ej                  ej                  ej                  z  ej                  z  ej                  z  fdZd Zd Zd Zd Zd Zd Zd Zd	 Zd
 Zd Zy)r  c                 
   t        j                  | |||||       || _        d| _        t	        j                  |        t        j                  |        g | _        | j                          | j                  t        j                  | j                         | j                  t        j                  | j                         | j                  t        j                  | j                         t        j                   | _        d| _        y )NTr  )r   r   r  rW   r!   r   	CheckList_Creater   r/   EVT_LIST_ITEM_SELECTEDOnItemSelectedEVT_LIST_ITEM_ACTIVATEDOnItemActivatedEVT_LIST_COL_CLICK
OnColClickr  r   r  )r   rD   r  rE   r   r[   r\   s          r5   r   zGCPList.__init__	  s     	$Cu= 	##D)''- 		"++T-@-@A		",,d.B.BC		"''9r   c           	         	 t        j                         }|j	                  t        j
                  t        j                  z  t        j                  z         |j                  d
       t        j                  |_
        d}t        d      t        d      t        d      t        d      t        d      t        d      t        d      fD ]*  }|j                  |       | j                  ||       |d	z  }, y )Nr   r  zsource Ezsource Nztarget Eztarget NzForward errorzBackward errorr@   r  )rv   InsertColumnr/   ListItemSetMaskLIST_MASK_TEXTLIST_MASK_IMAGELIST_MASK_FORMATSetImageLIST_FORMAT_LEFTm_formatSetText)r   idx_colr4  infolbls        r5   r$  zGCPList._Create	  s      ;;=DLL**R-?-??"BUBUUVMM"//DMG%****/""#  S!!!'401r   c                 N   | j                          d| _        t        j                  j	                  | j
                  j                  d         r| j
                  j                          n+t        d      D ]  }| j
                  j                  d        d| _
        | j                  | j                        | _        | j                  | j                  t        j                  t        j                         | j!                          d| _        | j#                  | j                         y)zLoad data into listFr  r   Nr   T)DeleteAllItemsrW   r+   r,   isfiler  r  rm  r  r  r   r  r  r  r/   r  r  EnsureVisible)r   r  s     r5   r  zGCPList.LoadData	  s    77>>$((--12HH 1X &%& ++DMM:$--)?)?AWAWX4==)r   c                     | j                   rj| j                  j                  }|j                  dd       | j                  j                  r*| j                  j
                  }|j                  dd       yyy)zItem is checked/uncheckedFro  N)rW   r  r  rs  r  r  )r   r
  r   ri  rj  s        r5   OnCheckItemzGCPList.OnCheckItem	  sf     ;;8800L""%e"Dxx###xx44&&e%&H $	 r   c           	         | j                         dz   | _        | j                  t        | j                        ddddddg       | j                         dz
  | _        | j                  | j                  | j                         | j                  | j                  t        j                  t        j                         | j                          | j                  j                  j                  ddgt        | j                               | j                  j                  j                  ddgt        | j                               | j                  | j                         | j                  S )r  r@   r  r#   r   )rl  r   )r  r  Appendr   r   r  r  r/   r  r  r  r  AddItemr  r<  r   s    r5   r  zGCPList.AddGCPItem	  s     ,,.2D$$%
	
 ))+a/(8(89$--)?)?AWAWX  ((Ac$BRBR>S(T  ((Ac$BRBR>S(T4==)}}r   c                    | j                   t        j                  k(  ry| j                  | j                         }| j	                  | j                          | j                   t        j                  k7  r| j
                  j                  j                  |dz
        }| j
                  j                  j	                  |       | j
                  j                  j                  |dz
        }| j
                  j                  j	                  |       |S )z"Deletes selected item in GCP list.Nr@   )	r   r/   r  r  
DeleteItemr  r  rL  r  )r   r   r  s      r5   r  zGCPList.DeleteGCPItem
  s    ==BLL(t}}-&==BLL(88++33C!G<DHH$$//588++33C!G<DHH$$//5
r   c                    ddg}t        | j                               D ][  }| j                  |t        j                         |dkD  s)| j                  |      ||dkD     k  sD| j                  |||dkD            ] | j                          y)zResize columnsZ   x   r   rD  N)r  r  SetColumnWidthr/   LIST_AUTOSIZEGetColumnWidthSendSizeEvent)r   minWidthr  s      r5   r  zGCPList.ResizeColumns
  s    9t**,- 	8A2#3#341u,,Q/(1q5/A##AxA7		8 	r   c                     | j                   S )zGet index of selected item)r   r   s    r5   r  zGCPList.GetSelected$
  s    }}r   c                    | j                   r| j                  |j                         k7  r|j                         | _        | j                  | j                        | _        | j
                  j                  }|j                  dd       | j
                  j                  r)| j
                  j                  }|j                  dd       |j                          y)zItem selectedFro  N)rW   r   GetIndexr  r  r  r  rs  r  r  r   rt  s       r5   r&  zGCPList.OnItemSelected(
  s    ;;4==ENN,<<!NN,DM#//>D8800L""%e"Dxx###xx44&&e%&H

r   c                    g }|j                         }| j                  |      }d}t        dd      D ]1  }|j                  | j	                  ||      j                                3 t        | t        j                  ||      }|j                         t        j                  k(  r|j                         }t        |      dk(  rt        | t        d             yt        t        |            D ])  }||   ||   k7  s| j                  ||dz   ||          d}+ |rD| j                  |dd	       | j                  |d
d	       | j                  |      }|t!        |d         t!        |d         t!        |d         t!        |d         ddg| j"                  j$                  |<   | j"                  j&                  j	                  |dz
        j)                  t!        |d         t!        |d         g       | j"                  j*                  j	                  |dz
        j)                  t!        |d         t!        |d         g       | j"                  j-                          yyy)zS
        When item double clicked, open editor to update coordinate values
        Fr@   r   )rD   rE   datagcpnor   z-Invalid coordinate value. Operation canceled.rG   Tr#   r  r   r   r  N)rN  r  r  r   rL  r[  EditGCPr/   ru   r0  r;  	GetValuesrj   r   rv   r  rf  r  r  r  rM  r  r  )	r   r   rl  r
  r   changedr  r3  valuess	            r5   r(  zGCPList.OnItemActivated4
  s     u%q! 	<AMM$,,ua088:;	< TbiifCH==?bhh&]]_F6{aMN
 s6{+ 'AayF1I-UAE6!9="&'
 LL2.LL2.**51CfQi(fQi(fQi(fQi(2DHH))#. HH,,44S1W=GGvay)5+;< HH,,44S1W=GGvay)5+;< HH**,+  'r   c                     | j                  d| j                        | _        | j                  | j                  t        j
                  t        j
                         |j                          y)z!ListCtrl forgets selected item...r  N)r  r  r   r  r/   r  r   r   s     r5   r*  zGCPList.OnColClickg
  sE    b$*:*:;$--)?)?AWAWX

r   N)r   r   r   r/   ru   DefaultPositionDefaultSize	LC_REPORTSUNKEN_BORDER	LC_HRULESLC_SINGLE_SELr   r$  r  r>  r  r  r  r  r&  r(  r*  r   r   r5   r  r  	  s|    
 99^^llR---<r?O?OO>"H*,	I@"	
1-fr   r  c                   4    e Zd ZdZej
                  fdZd Zy)r:  zlDialog to create a vector group (VREF file) for georectifying

    .. todo::
        Replace by g.group
    c                 
   t         j                  j                  | |||t        d             || _        || _        || _        || _        t        j                  t        j                  j                  | j                  | j
                  | j                  d            }|D ]s  }	t        j                  j                  t        j                  j                  | j                  | j
                  | j                  d|	d            rc|j                  |	       u t        j                  |       t        j                  j                  | j                  | j
                  | j                  d| j                  d      | _        t#        | t         j$                        | _        t#        | t         j(                        | _        | j*                  j-                          t/        | t         j0                  |      | _        t        j                  j                  | j                         rt5        | j                         }
	 g }|
j7                         D ]F  }|j9                  d	d
      }t;        |      dk  r$|j=                  |j?                  d      d          H | j2                  jA                  |       |
jC                          t        jD                  | t         j0                  dt         jF                        }t        jH                  t         jJ                        }t        jH                  t         jL                        }|jO                  tQ        | t         j0                  t        d            t         jR                  t         jT                  z  t         jV                  z  d       |jO                  | j2                  t         jR                  t         jT                  z  t         jV                  z  d       |jO                  |t         jT                  t         jX                  z  d       |jO                  |dt         jZ                  t         jR                  z  t         jV                  z  t         j\                  z  d       t        j^                         }|ja                  | j&                         |ja                  | j*                         |jc                          |jO                  |dt         jd                  t         jX                  z  t         jf                  z  d       | ji                  |       |jk                  |        | jm                          y # |
jC                          w xY w)NzCreate vector map group)r\   rF   r&   r>  r9  rf  rD   rE   rD   rE   r   r?   r#   r@   r  r   )   r  rD   rE   r[   r\   z%Select vector map(s) to add to group:r   r   r  r   r  r   r   )7r/   Dialogr   rv   rc   r   r   r  r+   r   r,   r-   r;  remover
   r   rp  r   	ID_CANCEL	btnCancelr;  btnOK
SetDefaultr   ru   listMapr*   rg   rh   rj   r   rk   SetCheckedStringsr1   
StaticLineLI_HORIZONTALr  r  r  r   r   r   ALIGN_RIGHTr#  r   GROWr"  StdDialogButtonSizer	AddButtonRealizer   r   r  Fitr  )r   rD   rE   r8  r   r   r9  r\   r  dirr   checkedr   r   r  r*  s                   r5   r   zVectGroup.__init__v
  s    			&"E3L1M 	 	
 %"
 ::GGLL++T__dmmXV
  	%C77>>&&OOMM	 $	% 	H% OOMMLL
  t=4BHH5



 $4BIIxP77>>$--(T]]#A	KKM 7D<<b1D4y1} NN4::c?1#56	7
 ..w7	}}BIIHB<L<L
 BKK(kk"--(99?@
 ))BNN:RWWD 	 	
 	LL))BNN:RWWD 	 	
 			#BNNRVV3A	>		2333bgg=H	 	 	
 **,4>>*4::&		RVV);boo)MVW 	 	
 	e		$c 	s   5A6U Uc                 p   g }t        | j                  j                               D ]X  }| j                  j                  |      s|j	                  | j                  j                  |      dz   | j                  z          Z t        j                  j                  | j                        }t        j                  j                  |      st        j                  |       t        | j                  d      }	 |D ]  }|j                  |dz           	 |j                          y# |j                          w xY w)zCreate VREF filer  r   r   r?   N)r  rj  GetCount	IsCheckedr   r   r   r+   r,   dirnamerp  r   makedirsr*   r   r1   )r   
vgrouplistr  ry  r   rr  s         r5   r<  zVectGroup.MakeVGroup
  s    
$,,//12 	RD<<))$/dll44T:S@4==PQ	R
 ''//$--0ww~~g&KK S)	" %t$% GGIAGGIs   6D# #D5N)r   r   r   r   r/   DEFAULT_DIALOG_STYLEr   r<  r   r   r5   r:  r:  o
  s     %%zxr   r:  c                   V    e Zd Zej                   ed      ej                  fdZddZy)rR  zEdit GCPc           
         t         j                  j                  | ||||       t        j                  |       }t        j                  t         j
                        }t        |t         j                  dt        d      dt        |      d      }	t        j                  |	t         j
                        }
t        j                  dd      }t        |t         j                  d	      | _        t        |t         j                  d	      | _        t        |t         j                  d	      | _        t        |t         j                  d	      | _        |d
   }|d   |d
<   ||d<   d}d}d}t        d      | j                  ft        d      | j                  ft        d      | j                  ft        d      | j                   ffD ]  \  }}t#        |t         j                  |      }|j%                  |t         j&                  ||f       |d
z  }|j)                  t        ||                |j%                  |||f       |d
z  }|d
z  }|dkD  s|d
z  }d} |
j%                  |d
t         j*                  t         j,                  z  d       |j%                  |
d
t         j*                  t         j,                  z  d       t/        |t         j0                        | _        t/        |t         j4                        | _        | j6                  j9                          t        j:                         }|j=                  | j2                         |j=                  | j6                         |j?                          |j%                  |dt         j@                  t         j,                  z  d       |jC                  |       |jE                  |        y)z:Dialog for editing GPC and map coordinates in list control)rF   r\   r	  rX  zGround Control Point No.r   r   vgaphgap)   r  )rD   rE   r[   r@   r   r   z	source E:z	target E:z	source N:z	target N:r   r   )r   r   rc  N)#r/   rd  r   Panelr  r  r   ru   rv   r   StaticBoxSizerGridBagSizerr   xcoordycoordecoordncoordr   r   r   r%  r   r   r   rf  rg  r;  btnOkri  rp  rq  rr  rn  r  rs  )r   rD   rP  rQ  rE   rF   r\   panelr   r  boxSizer	gridSizer	tmp_coordrowr4  idxr   r  r*  s                      r5   r   zEditGCP.__init__  s    			45F%BKK(yy !;<c%jI

 $$S"++6 OO3	e			Je			Je			Je			J G	q'QQ{^T[[){^T[[){^T[[){^T[[)	
 	JE3 e		GEMM%b&>&>S#JMO1HCLLT#Y(MM#C:M.1HC1HCQwq'	* 	Y1299rvv3EaP		(qryy266/A!	L
  r||4E288,


**,4>>*4::&		(qr~~/Fq	Qu		$r   Nc                    g }	 t        | j                  j                                t        | j                  j                                t        | j                  j                                t        | j
                  j                                |j                  | j                  j                                |j                  | j                  j                                |j                  | j                  j                                |j                  | j
                  j                                |S # t        $ r |cY S w xY w)z#Return list of values (as strings).)rf  r  r.  r  r  r  
ValueErrorr   )r   columns	valuelists      r5   rS  zEditGCP.GetValuesZ  s    		$++&&()$++&&()$++&&()$++&&() 	--/0--/0--/0--/0  		s   BD6 6EEr  )	r   r   r   r/   ru   rv   r|  r   rS  r   r   r5   rR  rR    s'     99
m%%Pdr   rR  c                       e Zd Zej                  ej
                  ej                  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d Zd Zy)r  c           	         t         j                  j                  | ||||||       	 || _        t        | _        t        d   t        d   d| _        d| _        i | _	        g d| _
        t        j                  | t         j                  t         j                        }| j                  |       | j                  |       t!        | t         j"                        }	t!        | t         j$                        }
t!        | t         j&                        }|
j)                          |
j+                  t         j,                  | j.                         |
j1                  t3        d             |	j+                  t         j,                  | j4                         |	j1                  t3        d             |j+                  t         j,                  | j6                         |j1                  t3        d	             t        j8                  t         j:                        }|j=                  |
t         j>                  t         j@                  z  d
       |j=                  |	t         j>                  t         j@                  z  d
       |j=                  |t         j>                  t         j@                  z  d
       t        j8                  t         jB                        }|j=                  |dt         jD                  t         jF                  z  d
       |j=                  |dt         jH                  t         jF                  z  d
       | jK                  |       |jM                  |        y )Nr%   r&   r$   r   )r  linearlinear_fcubiccubic_flanczos	lanczos_f)rD   rE   r\   z%Apply changes for the current sessionzHApply and save changes to user settings file (default for next sessions)zClose dialogr   r  r@   rc  )'r/   rd  r   rD   r   new_src_mapr   new_tgt_mapr  r  methodsNotebookru   
BK_DEFAULT&_GrSettingsDialog__CreateSymbologyPage*_GrSettingsDialog__CreateRectificationPager   ID_SAVEID_APPLYID_CLOSEri  r   rB  OnApply
SetToolTiprv   OnSaveOnCloser  r  r   r#  r"  r  r   r   rn  r  rs  )r   rD   rE   r]   rF   r   r[   r\   notebookbtnSavebtnApplybtnCloser*  	mainSizers                 r5   r   zGrSettingsDialog.__init__n  sD    			4UCuE	 "&-h&778CTU
 ;;dryyN""8,&&x0 rzz*$,$, 	bmmT\\2AEFGR]]DKK0Z	

 	bmmT\\2An-. ;;r}}-XBGGbhh$6qAW277RXX#5a@XBGGbhh$6qA KK,	h1299rvv3EaPh12>>BFF3JSTU 	i dr   c           
         t        j                  |t         j                        }|j                  |t	        d             t        j
                  t         j                        }t        j                  dd      }t        j                  |t         j                  t	        d            | _	        t        j                  dd	d
      }| j                  j                  |       |j                  | j                  t         j                  d       t        |t         j                  t	        d            }|j!                  t	        d             |j                  |t         j                  d       t        j                  dd	d      }t#        |t         j                  dt         j$                        | _        | j&                  j                  dt)        |      z         | j*                  j,                  r| j&                  j/                          | j&                  j1                         | j2                  d<   |j                  | j&                  t         j4                  d       |j7                  d       |j                  |t         j8                  t         j:                  z  d       t=        |t         j                  dt	        d      z        }t        j>                  |t         j                        }	t        j                  dd      }
d}t        |t         j                  t	        d            }|
j                  |t         j                  |df       t        j                  ddd      }tA        jB                  |t         j                  t        jD                  |d   |d   |d   d             }|j1                         | j2                  d<   |
j                  |t         j4                  |df       |dz  }t        |t         j                  t	        d!            }|
j                  |t         j                  |df       t        j                  ddd"      }tA        jB                  |t         j                  t        jD                  |d   |d   |d   d             }|j1                         | j2                  d"<   |
j                  |t         j4                  |df       |dz  }t        |t         j                  t	        d#            }|
j                  |t         j                  |df       t        j                  ddd$      }tA        jB                  |t         j                  t        jD                  |d   |d   |d   d             }|j1                         | j2                  d$<   |
j                  |t         j4                  |df       |dz  }t        |t         j                  t	        d%            }|
j                  |t         j                  |df       t        j                  ddd&      }tA        jB                  |t         j                  t        jD                  |d   |d   |d   d             }|j1                         | j2                  d&<   |
j                  |t         j4                  |df       |dz  }t        j                  |t         j                  t	        d'            | _#        t        j                  ddd(      }| jF                  j                  |       |
j                  | jF                  t         j                  |df       |dz  }t        |t         j                  t	        d)            }|
j                  |t         j                  |df       tI        t        j                  ddd*            }tK        |t         j                  dd+,      }|j                  |       |j1                         | j2                  d*<   |
j                  |t         j4                  |df       |dz  }t        |t         j                  t	        d-            }|
j                  |t         j                  |df       tI        t        j                  ddd.            }tK        |t         j                  dd/,      }|j                  |       |j1                         | j2                  d.<   |
j                  |t         j4                  |df       |
j7                  d       |	j                  |
t         j8                  0       |j                  |	t         j8                  t         j:                  z  d       tM        |t         j                  tN        jP                  d1d23      | _)        | j*                  jT                  jW                  d4       | jR                  jY                  tZ               | jR                  j\                  j_                  | j*                  j`                  5       | j*                  jT                  jW                  d6       tM        |t         j                  tN        jP                  d7d2| j*                  jT                  jb                  je                         8      | _3        | jf                  jY                  d9       | jf                  j_                          tM        |t         j                  tN        jP                  d:d23      | _4        | jh                  jY                  d:       | jh                  j_                          |j                  t        |t         j                  t	        d;            dt         jj                  t         j:                  z  d<       |j                  | jR                  dt         jj                  t         j:                  z  d<       | jR                  j                  tl               |j                  t        |t         j                  t	        d=            dt         jj                  t         j:                  z  d<       |j                  | jf                  dt         jj                  t         j:                  z  d<       | jf                  j                  tn        d7          |j                  t        |t         j                  t	        d>            dt         jj                  t         j:                  z  d<       |j                  | jh                  dt         jj                  t         j:                  z  d<       | jh                  j                  tn        d:          | j                  jq                  t         jr                  | jt                         | j&                  jq                  t         jv                  | jx                         | jR                  jq                  t         jv                  | jz                         | jf                  jq                  t         jv                  | j|                         | jh                  jq                  t         jv                  | j~                         |j                  |       |S )?,Create notebook page with symbology settingsr_  	Symbologypager#  r   r  z Highlight highest RMS error onlyr   r  r  r  r  r   r   r  z&Highlight RMS error > M + SD * factor:zHighlight GCPs with an RMS error larger than 
mean + standard deviation * given factor. 
Recommended values for this factor are between 1 and 2.)r@   r   r  )F   r  rb  z%sr   r@   r  r   zSymbol settingsr   zColor:r  r  r   r!  )rD   rE   r  zColor for high RMS error:r  zColor for selected GCP:r  zColor for unused GCPs:r   zShow unused GCPsr  zSymbol size:r[   ra  )rD   rE   minmaxzLine width:r  r|  )r   rp   FrG  rI   rh  rK   r%   rJ  r  r&   rF  rc  rI  rL  )Ar/   r  ru   AddPagerv   r  r  r  CheckBoxhighlighthighestr   r%  r%  r   r   r   r  r   TE_NOHIDESELrmsWinr   rD   r  DisableGetIdr  rn  r   r   r   r   r  cselColourSelectr*  
showunusedr-  r   r   r   rN  rO  r^   r   rj  rp   rm  rn  rr   r|   rP  rQ  rR  r   r   r   r   EVT_CHECKBOXOnHighlightr   
OnSDFactorrS  rT  rU  r  )r   r  r  r   rmsgridSizerhhrmslabelr  r  r  r  r  r   r4  colWinhcolhcolWinscolscolWinucolucolWinshuusymsizesizeWinr  widWins                             r5   __CreateSymbologyPagez&GrSettingsDialog.__CreateSymbologyPage  s
    RYY7e!K.9BKK(AA6 !#RYYa0R.S!
 H%N&&r*!!(@(@f 	 	

 yy<=

 	J	
 	(@(@fM##(jQRYYXR__
 	TCM12;;##KK!"&++"3"3"5J2>>vF##A&		,RYY%7	Bu&1EVCW:WX$$S"++6OO3	
 %BIIQx[Ie"":":aIX8GL""RYYryyQQQQT/U
  &||~Gf2>>Qx@
 	qRYYa0K.L
 	e"":":aIhHXN##RYYryya$q'4PQ7TW/X
 !(HgBNNaA
 	qRYYa0I.J
 	e"":":aIhHXN##RYYryya$q'4PQ7TW/X
 !(HgBNNaA
 	qRYYa0H.I
 	e"":":aIhHXN##RYYryya$q'4PQ7TW/X
 !(HgBNNaA 	q++RYYa0B.C
 hHXN  &dooB,D,D3PQ(S
 	q%BIIQ~=NOe"":":aIl&&X8FST%BII1"E!%mmoFgBNNaA
 	q%BIIQ}=MNe"":":aIL$$8'RS299!D%||~Gf2>>Qx@  #YRYY/		(RVV!3A	> #yy..
 	##H-((1,,dkk6J6J,K 	##H- &yy..{{((00PPR!
 	,,V4,,. &yy..!
 	,,X6,,.		!4S2T ' 	 	
 			!"--"&&2HQR 	 	
 	""7+		99>?
 ' 	 		
 			!!abmmbff6LUV 	 	
 	&&wx'89		99>?
 ' 	 		
 			!!abmmbff6LUV 	 	
 	&&wx'89 	""2??D4D4DEdoo6r{{D,?,?@""2;;0G0GH""2;;0G0GHur   c           
         t        j                  |t         j                        }|j                  |t	        d             t        j
                  t         j                        }t        j                  |t         j                  dt	        d      z  t	        d      t	        d      t	        d      gt         j                  	      | _	        |j                  | j                  d
t         j                  t         j                  z  d       | j                  j                  | j                  j                  dz
         t        j                   dd      }|j                  t#        |t         j                  t	        d            dt         j$                  t         j&                  z  t         j                  z  d       t        j(                  |t         j                  | j*                        | _        |j                  | j,                  dt         j.                  d       | j,                  j1                  | j                  j2                         |j5                  d       |j                  |t         j                  t         j                  z  d       t        j6                  |t         j                  t	        d            | _        |j                  | j8                  d
t         j                  t         j                  z  d       | j8                  j;                  | j                  j<                         t?        j@                  ddd      }t        j6                  |t         j                  t	        d            | _!        | jE                  t         jF                  | jH                  | jB                         |j                  | jB                  d
t         j                  t         j                  z  d       | jB                  j;                  |       || j                  _!        |j                  t#        |t         j                  t	        d            d
t         j$                  t         j                  z  d       tK        |t         j                  dd      | _&        | jL                  j;                  | j                  jN                         |j                  | jL                  d
t         j$                  t         j                  z  d       | jL                  jE                  t         jP                  | jR                         | jE                  t         jT                  | j                  jV                  | j                         | jE                  t         jX                  | jZ                  | j,                         | jE                  t         jF                  | j\                  | j8                         |j_                  |       |S ) r  r_  Rectificationr  r   zSelect rectification orderz	1st orderz	2nd orderz	3rd orderr   r   r   rc  r@   r  zSelect interpolation method:r   r  )r   r   r   r`  )r   r@   r  z/clip to computational region in target locationr  r$  r  r  zoverwrite result mapr  r#   r  r  )0r/   r  ru   r  rv   r  r  r   r   
rb_grorderr   r   r   rC  rD   r  r  r   r   r   Choicer  grmethodrn  r   r  r   r  r_  r%  r  r   r%  r  r   r  OnOverwriter   r$  r  r   r'  r   r  
EVT_CHOICEOnMethodOnClipRegionr  )r   r  r  r   r  r  s         r5   __CreateRectificationPagez*GrSettingsDialog.__CreateRectificationPage  s    RYY7e!O*<=BKK( ++yy19::{^Q{^Q{^D--
 			$//abii"&&6HQR	S$$T[[%9%9A%=> OO3	!4R2S !9!99BFFB 	 	
 		299dllSdmmbnnQO(()>)>?  #		)"))bff"4Q	? [[yyEF


 			$**RVV1CA	N

DKK667 !$$8{S	RYYa0F.G
 			"//4#3#3T^^D		$..QRYY5GPQ	R	* ) 			!4P2Q ' 	 	
  u"9Udkk334		$,,12==2663IRS	T 	"++t'7'78		"//4;;#8#8$//J		"-->		"//4#4#4djjAur   c                     | j                   j                         r,d| j                  _        | j                  j                          yd| j                  _        | j                  j                          y)z-Checkbox 'highlighthighest' checked/uncheckedTFN)r  rx  rD   r  r  r  r  r   s     r5   r  zGrSettingsDialog.OnHighlight  sL      **,'+DKK$KK!',DKK$KK r   c                    	 t        | j                  j                               | _        | j                  dk  rt        | t        d             y| j                  dk  rt        | t        d             yy# t        $ r Y yw xY w)z.New factor for RMS threshold = M + SD * factorNr   z RMS threshold factor must be > 0rG   r@   z@RMS threshold factor is < 1
Too many points might be highlighted)rf  r  r.  r  r  r   rv   r   s     r5   r  zGrSettingsDialog.OnSDFactor  s{    	!$++"6"6"89DM ==A$*L(MN]]Q; 	  		s   (A7 7	BBc                 f    | j                   j                         }|dk(  s|t        k(  s|| _        yyy)rW  r#   N)rO  r.  r   r  )r   r   tmp_maps      r5   rS  zGrSettingsDialog.OnSrcSelection  s5     ##,,."}W%7&D &8}r   c                 R    | j                   j                         | j                  d<   y)Target map to display selectedr%   N)rQ  r.  r  r   s     r5   rT  z#GrSettingsDialog.OnTgtRastSelection  #     &*%:%:%C%C%E"r   c                 R    | j                   j                         | j                  d<   y)r  r&   N)rR  r.  r  r   s     r5   rU  z#GrSettingsDialog.OnTgtVectSelection  r  r   c                 \    | j                   |j                            | j                  _        y r  )r  r  rD   r  r   s     r5   r  zGrSettingsDialog.OnMethod   s      $U-?-?-A Br   c                 B    |j                         | j                  _        y r  )rx  rD   r  r   s     r5   r  zGrSettingsDialog.OnClipRegion#  s    %*__%6"r   c                 B    |j                         | j                  _        y r  )rx  rD   r  r   s     r5   r  zGrSettingsDialog.OnOverwrite&  s     % 1r   c                 V    | j                   j                         | j                  _        y r  )r$  r.  rD   r  r   s     r5   r'  zGrSettingsDialog.OnExtension)  s     $ 5 5 7r   c                    d }t        j                  ddd| j                  j                                | j                  dkD  rt        j                  ddd| j                         | j                  | j
                  _        | j
                  j                  dkD  rS| j
                  j                  | j
                  j                  | j
                  j                  z  z   | j
                  _        t        j                  dddt        t        j                  | j                  d         j                                      t        j                  ddd	t        t        j                  | j                  d	         j                                      t        j                  ddd
t        t        j                  | j                  d
         j                                      t        j                  dddt        t        j                  | j                  d         j                                      t        j                  ddd| j                  j                                t        j                  dddt        j                  | j                  d         j                                t        j                  dddt        j                  | j                  d         j                                t        j                  ddd| j
                  j                         d}d}d}d}d}| j                   t"        k7  r,| j
                  j$                  j&                  j)                         }| j
                  j$                  j&                  j+                  |d          | j                   at,        dk(  rddt"        z  g}d}nddt"        z  g}d}| j
                  j$                  j/                  d       t1        j2                  |      \  }}	| j
                  j$                  j&                  j5                  t,        |d|ddd       | j
                  j$                  j/                  d       | j6                  d   t8        d   k7  s| j6                  d   t8        d   k7  r'| j
                  j$                  j:                  j)                         }|rf| j
                  j$                  j:                  j+                  |d          |d= | j
                  j$                  j:                  j)                         }|rfd}| j6                  d   t8        d<   | j6                  d   t8        d<   | j
                  j$                  j<                  j?                  t8        d         }
t8        d   dk7  rL|
rJ|
d   }|
d   }t8        d   }| j
                  j$                  j:                  j5                  ||d|ddd       njt8        d   dk7  r^ddt8        d   z  g}t1        j2                  |      \  }}	| j
                  j$                  j:                  j5                  d|d|ddd       d}t8        d   dk7  r^ddt8        d   z  g}t1        j2                  |      \  }}	| j
                  j$                  j:                  j5                  d|d|ddd       d}t8        d   dk(  rt8        d   dk(  r| j
                  j@                  rd| j
                  _         | j
                  jB                  jE                  d      jG                          | j
                  jB                  jI                          | j
                  jJ                  jM                  d       | j
                  jJ                  jO                  d       | j
                  jQ                         jO                  d d!       n<| j
                  j@                  s%d| j
                  _         | j
                  jB                  jE                  d      jS                          | j
                  jB                  jI                          | j
                  jJ                  jM                  d       | j
                  jJ                  jO                  d       | j
                  jQ                         jO                  d d!       | j
                  jT                  jW                  | j
                  j:                  j)                         "       | j
                  jY                  ||||       | j
                  j[                          y )#Nr  r  r  )r9  r   r  r   r   r  r  r  r  r  r   r  r[   r  r$  r  Fr%   rL   rM   TrN   rI   rO   rP   rK   r&   rX   r#   rY   rZ   r  r  )rv  ).r   Setr  r.  r  rD   r  r  r  tupler/   r  r  	GetColourr  r  r  r   r^   r   GetListOfLayersDeleteLayerrp   r   r
   r   r   r  r   r   r|   r   r  r   r	  r)  r   r  rC  r  r  r   r  	ZoomToMapr  r  )r   rv  r  r  r  r  reload_targetr   rT   r   r   r   s               r5   UpdateSettingszGrSettingsDialog.UpdateSettings,  s   
  ''002		
 ==1E*DMM $(==DKK {{$$q(KK''$++*>*>ARAR*RR % 	))$++g*>?IIKL		
 	))$++h*?@JJLM		
 	))$++h*?@JJLM		
 	))$++h*?@JJLM		
 	//**,		
 	##DKK$78AAC		
 	##DKK$89BBD		
 	++''		
 		w&[[&&--==?FKK$$00;&&G("#X%78 	#X%78"&KK''133G<KD%KK$$-- .  KK''1 X&'(*;;)WX->> [[&&--==?F!!((44VAY?1I**11AAC 
 !M $ 0 0 :GH $ 0 0 :GH $ 1 1 9 9 M MX& !N ! x B&+< /v6
+E2x(!!((11$#   2  "b(#X0A%AB#77@e!!((11"#   2  !	x B&#X0A%AB#77@e!!((11"#   2  #'8"wx'8B'>{{&&*/'  ((2779  '')%%2215%%,,U3))+22:e2L;;***.'  ((2779  '')%%2215%%,,T2))+22:d2K((22;;--==? 3  	!!	?	
 	!r   c                    | j                          i }t        j                  |       t        j                  d      |d<   t        j                  |      }| j
                  j                  j                  t        d      |z         y)zButton 'Save' pressed)settingsr  )r9  z(GCP Manager settings saved to file '%s'.N)	r  r   ReadSettingsFiler%  
SaveToFilerD   r`   r^  rv   )r   r   fileSettingsr  s       r5   r  zGrSettingsDialog.OnSave  sl    %%|<!-!1!1!AX&&|4$$89D@	
r   c                 $    | j                          y)zButton 'Apply' pressedN)r  r   s     r5   r  zGrSettingsDialog.OnApply  s    r   c                 $    | j                          y)zButton 'Cancel' pressedN)Closer   s     r5   r  zGrSettingsDialog.OnClose  s    

r   N)r   r   r   r/   rW  rX  r|  r   r  r  r  r  rS  rT  rU  r  r  r  r'  r  r  r  r  r   r   r5   r  r  m  sx     ^^%%GRkZKZ!"'FFC728C"J	

r   r  )Nr   
__future__r   r+   r  r  r&  r   r/   wx.lib.mixins.listctrlr   r   wx.lib.colourselectlibcolourselectr  corer   wxPythonPhoenixr   rs   r	   grass.scriptscriptra   r
   core.renderr   gui_core.gselectr   r   r   gui_core.dialogsr   gui_core.mapdispr   	core.gcmdr   r   r   r   core.settingsr   gcp.mapdisplayr   core.gifacer   gui_core.wrapr   r   r   r   r   r   r   r   r    r!   location_wizard.wizardr"   r   r   r   rp   r6   r8   objectr:   rw   ry   r{   r|  r   r  rd  r:  rR  r  r   r   r5   <module>r     sC  : & 	 
  
  	 L " "      A A ( ' < < & # $   H 2
&
a aH	O:: O:d`(
 `(FIW* IWXKx* K\*"X "Jih*,B iXU		 Upcbii cLW
ryy W
r   