
    ը	fdi                        d Z ddlZddlZddlmc mc mZ ddlmc m	Z
 ddlmZ ddlmZ ddlmZmZmZ ddl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mZm Z m!Z!m"Z" ddl#m$Z%  G d
 de      Z& G d de      Z' G d dejP                        Z) G d de"ejT                  ejV                        Z,d Z- G d dejP                        Z. G d dejP                        Z/y)a  
@package iclass.dialogs

@brief wxIClass dialogs

Classes:
 - dialogs::IClassGroupDialog
 - dialogs::IClassMapDialog
 - dialogs::IClassCategoryManagerDialog
 - dialogs::CategoryListCtrl
 - dialogs::IClassSignatureFileDialog
 - dialogs::IClassExportAreasDialog

(C) 2006-2011 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 Vaclav Petras <wenzeslaus gmail.com>
@author Anna Kratochvilova <kratochanna gmail.com>
    N)	globalvar)UserSettings)GError
RunCommandGMessage)SimpleDialogGroupDialog)gselect)SimpleValidator)CheckBoxButton
StaticText	StaticBoxTextCtrlMenuNewIdListCtrlc                   v    e Zd ZdZdd ed      ej                  fdZd Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zy)IClassGroupDialogz"Dialog for imagery group selectionNzSelect imagery groupc           	          t        j                   ||       d _        t        j                   j
                  dt        j                         d   gt        j                  t         j                               _        t        j                   j
                         _         j                  j                          |r+ j                  j!                  |        j#                          |r j                  j!                  |       t%         j
                  t&        j(                  t+        d             _         j,                  j/                  t&        j0                   j2                          j                  j5                         j/                  t&        j6                   fd	       t+        d
       _         j;                           j=                   j?                                y)
        Does post init and layout.

        :param parent: gui parent
        :param title: dialog window title
        :param id: wx id
        TgroupMAPSETcallback)parenttypemapsetssize	validatorr   zCreate/edit group...r   idlabelc                 B    t        j                  j                        S N)wx	CallAfterGroupSelected)eventselfs    //usr/lib/grass83/gui/wxpython/iclass/dialogs.py<lambda>z,IClassGroupDialog.__init__.<locals>.<lambda>`   s    r||D4F4F'G     z!Name of imagery group is missing.N) r   __init__use_subgr
   Selectpanelgrassgisenvr   DIALOG_GSELECT_SIZEr   ValidatorCallbackgroupSelectSubGroupSelectsubGroupSelectSetFocusSetValuer)   r   r'   ID_ANY_	editGroupBind
EVT_BUTTONOnEditGroupGetTextCtrlEVT_TEXTwarning_layout
SetMinSizeGetSize)r+   r   r   subgrouptitler#   s   `     r,   r/   zIClassGroupDialog.__init__3   sX    	dFE2">>::\\^H-...%t/E/EF
 &44DJJG!!#%%e, ((2::"))15K3L
 	BMM4+;+;<$$&++KKG	
 <='r.   c           	      h   | j                   j                  t        | j                  t        j
                  t        d            dt        j                  t        j                  z  t        j                  z  t        j                  z  d       | j                   j                  | j                  dt        j                  t        j                  z  d       | j                   j                  t        | j                  t        j
                  t        d            dt        j                  t        j                  z  t        j                  z  t        j                  z  t        j                  z  d       | j                   j                  | j                  dt        j                  t        j                  z  d       | j                   j                  | j                  dt        j                  d       | j                  j                  | j                          | j                   j#                  |        y)	Do layoutzName of imagery group:r#   r$   r      
proportionflagborderzName of imagery subgroup:N)	dataSizerAddr   r2   r'   r<   r=   EXPANDBOTTOMLEFTRIGHTr7   ALLr9   r>   SetSizersizerFitr+   s    r,   rE   zIClassGroupDialog._layoutg   st   tzzbiiq9Q7RSRYY&0288;	 	 	
 	RVV1CA 	 	
 	tzzbiiq9T7UVRYY&2RWW<rxxG	 	 	
 	ABII4Fq 	 	
 	4>>abffQO

DJJ'

tr.   c                 "   | j                   j                         | _        | j                  r| j                  j	                          n| j                  j                          | j                  | j                                | j                          y r&   )	
subg_chboxGetValuer0   
subg_panelShowHiderF   GetBestSizeLayoutr+   r*   s     r,   OnSubgChboxzIClassGroupDialog.OnSubgChbox   s]    002==OO  " OO  "((*+r.   c                     | j                   r6| j                  j                         | j                  j                         f}|S | j                  j                         df}|S )z#Returns selected group and subgroupN)r0   r7   r_   r9   )r+   rets     r,   GetDatazIClassGroupDialog.GetData   sZ     ==##,,.0C0C0L0L0NOC 
 ##,,.5C
r.   c                 z   | j                         \  }}t        | ||      }|j                          |j                         \  }}||j	                         v rU| j
                  j                  |       | j                          t        j                  | j                  j                  |       |j                          y)zLaunch edit group dialog)r   defaultGroupdefaultSubgroupN)ri   r	   	ShowModalGetSelectedGroupGetExistGroupsr7   r;   r)   r'   r(   r9   Destroy)r+   r*   gsdlggrs         r,   rA   zIClassGroupDialog.OnEditGroup   s    ||~1AqI$$&A##%%%%b) LL,,55q9r.   c                 Z    | j                         }| j                  j                  |       y r&   )rn   r9   Insertr+   r   s     r,   r)   zIClassGroupDialog.GroupSelected   s$    %%'""5)r.   c                 Z    | j                   j                         j                  d      d   S )z0Return currently selected group (without mapset)@r   )r7   r_   splitr\   s    r,   rn   z"IClassGroupDialog.GetSelectedGroup   s'    ((*005a88r.   c                     | j                         \  }}t        j                  |d      }g }|d   }|r| j                  rM|dk(  rt	        t        d      |       |S || j                  |      vrt	        t        d      ||fz  |       |S | j                  ||      }|sB| j                  rt	        t        d      ||fz  |       |S t	        t        d	      |z  |       |S t	        t        d
      |z  |       |S )zGet list of raster bands which are in the soubgroup of group with both having same name.
        If the group does not exists or it does not contain any bands in subgoup with same name,
        error dialog is shown.
        r   )nameelementr|    zPlease choose a subgroup.r!   z%Subgroup <%s> not found in group <%s>z/No data found in subgroup <%s> of group <%s>.
.zNo data found in group <%s>.
.zGroup <%s> not found)ri   r3   	find_filer0   r   r=   GetSubgroupsGetGroupBands)r+   r   rt   rr   r   bandsrq   s          r,   GetGroupBandsErrz"IClassGroupDialog.GetGroupBandsErr   s   
 AR9&M}}7189&I LD--a00ABaVK% !L&&q!,E==OPa&!% 	 1ABQFvV  1+,r1&Ar.   c                     i }|r||d<   t        dd|dd|j                         }d}|j                  d      d   r|j                  d      }|S )	zXGet list of raster bands which are in the soubgroup of group with both having same name.rH   rq   T)flagsr   readN
r   )i.group)r   striprz   )r+   r   rH   kwargsresr   s         r,   r   zIClassGroupDialog.GetGroupBands   s\     !)F:P#UPPVVX99T?1IIdOEr.   c                 <    t        d|dd      j                         S )Nr   Tsg)r   r   r   )r   
splitlinesrw   s     r,   r   zIClassGroupDialog.GetSubgroups   s    )5t4HSSUUr.   )__name__
__module____qualname____doc__r=   r'   r<   r/   rE   rf   ri   rA   r)   rn   r   r   r    r.   r,   r   r   0   sS    ,
 &'992(hF
*9&PVr.   r   c                   "    e Zd ZdZd Zd Zd Zy)IClassMapDialogz#Dialog for adding raster/vector mapc                    t        j                  | ||       || _        t        j                  | j
                  |t        j                  t        | j                              | _
        | j                  j                          t        d      | _        | j                          | j                  | j!                                y)z

        :param parent: gui parent
        :param title: dialog title
        :param element: element type ('raster', 'vector')
        )rI   r   )r   r   r   r    zName of map is missing.N)r   r/   elementTyper
   r1   r2   r   r5   r   r6   r}   r:   r=   rD   rE   rF   rG   )r+   r   rI   r}   s       r,   r/   zIClassMapDialog.__init__   s     	dF%8"~~::..%t/E/EF	
 	23'r.   c                 B   | j                   dk(  rt        d      }n| j                   dk(  rt        d      }| j                  j                  t	        | j
                  t        j                        dt        j                  t        j                  z  d       | j                  j                  | j                  dt        j                  t        j                  z  d       | j
                  j                  | j                         | j                  j                  |        y	)
rK   rasterzName of raster map:vectorzName of vector map:rL   r   rM   rN   N)r   r=   rR   rS   r   r2   r'   r<   rT   rX   r}   rY   rZ   r[   )r+   r$   s     r,   rE   zIClassMapDialog._layout	  s    x'+,E)+,Etzzbiiu=RVV#	 	 	
 	LLQRYY-? 	 	
 	

DJJ'

tr.   c                 6    | j                   j                         S )z"Returns selected raster/vector map)r}   r_   r\   s    r,   GetMapzIClassMapDialog.GetMap  s    ||$$&&r.   N)r   r   r   r   r/   rE   r   r   r.   r,   r   r      s    -(.&'r.   r   c                   T    e Zd ZdZ ed      ej                  fdZd Zd Z	d Z
d Zy)	IClassCategoryManagerDialogzrDialog for managing categories (classes).

    Allows adding, deleting class and changing its name and color.
    zClass managerc                    t         j                  j                  | |||       || _        t        j                  | t         j
                        }t        j                  t         j                        }t        |t         j
                  dt        d      z        }t        j                  |t         j                        }t        j                  dd      }t        |||j                        | _        t        |t         j                   	      }	t        |t         j"                  	      }
|j%                  | j                  d
dt         j&                         |j%                  |	dt         j&                         |j%                  |
dt         j&                         |j)                  d       |j+                  d       |j%                  |dt         j&                  t         j,                  z  d       |j%                  |dt         j&                  t         j,                  z  d       t        j                  t         j.                        }t        |t         j0                  	      }|j%                  t        j2                  dd      dt         j&                         |j%                  |d       |j%                  |dt         j&                  t         j,                  z  d       |	j5                  t         j6                  | j8                         |
j5                  t         j6                  | j:                         |j5                  t         j6                  | j<                         | j5                  t         j>                  | j<                         |jA                  |       |jC                  |        | jE                  d       | jG                          y)r   )r   rI   r#   r   r#   z %s ClassesrL   rM   )hgapvgap)	mapwindow
stats_datar#   )r   r   )      )posspanrP   )r   r   )r   rP   )r   r   r      r   rN   )rO   rP   )rO   )     N)$r'   Dialogr/   r   Panelr<   BoxSizerVERTICALr   r=   StaticBoxSizerGridBagSizerCategoryListCtrlr   catListr   ID_ADD	ID_DELETErS   rT   AddGrowableColAddGrowableRowrX   
HORIZONTALID_CLOSESizer?   r@   OnAddCategoryOnDeleteCategoryOnClose	EVT_CLOSErY   r[   SetSizerd   )r+   r   rI   r#   r2   	mainSizerboxrZ   	gridSizer	addButtondeleteButtonbtnSizercloseButtons                r,   r/   z$IClassCategoryManagerDialog.__init__'  sn    			4eC3KK,	"))6AiL3HI!!#r{{3OO3	'V0A0A
 5RYY/	e5dllV"))LiV"))<lRYY?  #  #		)		BFF0B1	Me		BFF0B1M;;r}}-Ur{{3RWWR_C[Q/h1299rvv3EaPr}}d&8&89"--)>)>?5		",,-y!dZ r.   c                    | j                   j                  j                         r1t        | j                   j                  j                               dz   }nd}dt	        |      z   }d}| j
                  j                  |||       y )Nr   class_z0:0:0)catr|   color)r   r   GetCategoriesmaxstrr   AddCategory)r+   r*   r   defaultNamedefaultColors        r,   r   z)IClassCategoryManagerDialog.OnAddCategoryY  sk    ;;!!//1dkk,,::<=ACC#c#h.  S{, Or.   c                 8    | j                   j                          y r&   )r   DeleteCategoryre   s     r,   r   z,IClassCategoryManagerDialog.OnDeleteCategoryc  s    ##%r.   c                 X    | j                   j                          | j                          y r&   )r   DeselectAllrb   re   s     r,   r   z#IClassCategoryManagerDialog.OnClosef  s      "		r.   c                     | j                   S )zReturns list widget)r   r\   s    r,   GetListCtrlz'IClassCategoryManagerDialog.GetListCtrlo  s    ||r.   N)r   r   r   r   r=   r'   r<   r/   r   r   r   r   r   r.   r,   r   r   !  s2    
 &'%7BII 0dP&r.   r   c                       e Zd ZdZej
                  fdZd Zd Zd Z	d Z
d Zej                  fdZd	 Zd
 Zd Zd Zd Zd Zd Zd Zy)r   a"  Widget for controlling list of classes (categories).

    CategoryListCtrl updates choice in mapwindow and removes raster map
    when deleting class (category).
    It uses virtual data in the terms of @c wx.ListCtrl.

    .. todo::
        delete vector features after deleting class
    c                    t        j                  | ||t        j                  t        j                  z  t        j
                  z  t        j                  z         t        d      dft        d      dff| _        | j                  | j                         || _
        || _        | j                  t        | j                  j                                      t        j                  | _        t"        j$                  j                  |        t"        j&                  j                  |        | j)                  t        j*                  | j,                         | j)                  t        j.                  | j0                         | j)                  t        j2                  | j4                         | j)                  t        j6                  | j4                         | j                  j8                  j;                  | j<                         | j                  j>                  j;                  | j<                         | j                  j@                  j;                  | j<                         | j                  jB                  j;                  | j<                         y)z
        :param parent: gui parent
        :param mapwindow: mapwindow instance with iclass toolbar and remove raster method
        :param stats_data: StatisticsData instance (defined in statistics.py)
        :param id: wx id
        )stylez
Class namer|   Colorr   )columnsN)"r   r/   r'   	LC_REPORT
LC_VIRTUAL	LC_HRULES	LC_VRULESr=   r   Populate	mapWindowr   SetItemCountlenr   	NOT_FOUNDrightClickedItemIdxlistmixListCtrlAutoWidthMixinTextEditMixinr?   EVT_LIST_BEGIN_LABEL_EDITOnEditEVT_LIST_ITEM_SELECTEDOnCategorySelectedEVT_COMMAND_RIGHT_CLICKOnClassRightUpEVT_RIGHT_UPstatisticsAddedconnectUpdatestatisticsDeletedallStatisticsDeletedstatisticsSet)r+   r   r   r   r#   s        r,   r/   zCategoryListCtrl.__init__  s    	,,.=L		
 <&1AgJ3HIdll+"$#doo;;=>?#%<< &&//5&&t,		"..<		"++T-D-DE		",,d.A.AB		"//4#6#67''//<))11$++>,,44T[[A%%--dkk:r.   c                 h    | j                  t        | j                  j                                      y r&   )r   r   r   r   r\   s    r,   r   zCategoryListCtrl.Update  s"    #doo;;=>?r.   c                 T   | j                   |   d   }|dk(  r	 |j                  d       | j
                  j                         |   }| j
                  j                  |      j                  ||i       | j                  j                  d   }|j                  j                  |       | j                  |       |dk(  r*| j                  j                  ||j                                | j                  j!                  d	       y # t        $ r t        | t	        d             Y y w xY w)
Nr   r|   asciiz!Please use only ASCII characters.)r   message)statsiClassTchanges)r   encodeUnicodeEncodeErrorr   r=   r   r   GetStatisticsSetStatisticsr   toolbarschoiceSetSelectionr1   UpdateRasterNameGetSelectedCategoryIdxUpdateChangeState)r+   rowcolumntextattrr   toolbars          r,   SetVirtualDatazCategoryListCtrl.SetVirtualData  s    ||F#A&6>G$
 oo++-c2%%c*88d|8L..))(3##C(C6>NN++D'2P2P2RS(((6 & a0S.TUs   D D'&D'c                     t        |      D ]  \  }}| j                  ||d           | j                  dd       | j                  dd       y )Nr   d   r   )	enumerateInsertColumnSetColumnWidth)r+   r   icols       r,   r   zCategoryListCtrl.Populate  sP    ( 	)FAsaQ(	) 	As#As#r.   c                     | j                   j                  |||       | j                  t        | j                   j	                                      | j
                  j                  d       y)z/Add category record (used when importing areas)Tr   N)r   AddStatisticsr   r   r   r   r
  )r+   r   r|   r   s       r,   r   zCategoryListCtrl.AddCategory  sO     	%%c47#doo;;=>?(((6r.   c                 :   t        | j                         d      }g }| j                  j                         }|D ]u  }||   }| j                  j	                  |      }|j
                  }| j                  j                  |       |j                  |       | j                  j                  |       w | j                  t        | j                  j                                      | j                  j                  d       | j                  j                  |       y )NT)reverser   )cats)sortedGetSelectedIndicesr   r   r  
rasterNamer   RemoveTempRasterappendDeleteStatisticsr   r   r
  DeleteAreas)r+   	indexListdel_catsr  r  r   statr|   s           r,   r   zCategoryListCtrl.DeleteCategory  s    4224dC	,,. 		2Aq'C??005D??DNN++D1OOC OO,,S1		2 	#doo;;=>?(((6"""1r.   c                     g }d}	 | j                  |t        j                  |      }|dk(  r	 |S |}|j                  |       =Nr   )GetNextItemr'   LIST_NEXT_ALLr!  )r+   stateindices	lastFoundindexs        r,   r  z#CategoryListCtrl.GetSelectedIndices  sR    	$$Y0@0@%HE{  "	u% r.   c                    |j                         }|j                         }|dk(  rI| j                  ||      }t        t        |j                  d            }t        j                         }|j                  t        j                  |        t        j                  | |      }|j                         j                  d       |j                         t        j                  k(  r^|j                         j                         j!                         }dj#                  t        t$        |            }| j'                  |||       |j)                          t        j*                  | j,                         |j/                          y )Nr   :T)GetIndex	GetColumnOnGetItemTextmapintrz   r'   
ColourData	SetColourColourColourDialogGetColourDataSetChooseFullrm   ID_OK	GetColourGetjoinr   r  rp   r(   r:   Skip)r+   r*   currentItem
currentColr  col_datars   r   s           r,   r   zCategoryListCtrl.OnEdit  s	   nn&__&
?$$[*=Cc399S>*C}}Hryy#///$1C--d3}}"((*))+557;;=S%1##KUCKKMLL'

r.   c                     | j                         }g }| j                  j                         }|D ]  }|j                  ||           | j                  j                  |       |r|j                          yy)zHighlight selected areasN)r  r   r   r!  r   HighlightCategoryr@  )r+   r*   r$  sel_catsr  r  s         r,   r   z#CategoryListCtrl.OnCategorySelected  sk    ++-	,,. 	%AOODG$	% 	((2JJL r.   c                    | j                  |j                         |j                         f      \  }}|t        j                  k7  r|t        j
                  z  r|| _        t        | d      sEt               | _	        | j                  t        j                  | j                  | j                         t               }|j                  | j                  t        d             | j!                  |       |j#                          y)z Show context menu on right clickpopupZoomtoAreasr   z(Zoom to training areas of selected classN)HitTestGetXGetYr'   r   LIST_HITTEST_ONITEMr   hasattrr   rH  r?   EVT_MENUOnZoomToAreasByCatr   Appendr=   	PopupMenurp   )r+   r*   itemr   menus        r,   r   zCategoryListCtrl.OnClassRightUp  s    llEJJL%**,#?@e2<<EB,B,B$B'+D$t/0$)GD!IIbkk4#:#:t?T?TIU v!!1%O#P	
 	tr.   c                     | j                   j                         | j                     }| j                  j	                  |       y)zZoom to areas of given categoryN)r   r   r   r   ZoomToAreasByCat)r+   r*   r   s      r,   rO  z#CategoryListCtrl.OnZoomToAreasByCat!  s1    oo++-d.F.FG'',r.   c                 z    | j                         }|D ]  }| j                  |d        | j                  d       y)zDeselect all itemsr   )onN)r  r1   r   )r+   r$  r  s      r,   r   zCategoryListCtrl.DeselectAll&  s?    ++-	 	!AKKaK 	! 	%r.   c                     | j                   j                         |   }| j                   j                  |      }t        || j                  |   d         S )Nr   )r   r   r  getattrr   )r+   rR  r  r   r&  s        r,   r3  zCategoryListCtrl.OnGetItemText/  sH    oo++-d3,,S1tT\\#.q122r.   c                      yr(  r   )r+   rR  s     r,   OnGetItemImagezCategoryListCtrl.OnGetItemImage4  s    r.   c           	      l   t        j                  t        t        | j	                  |d      j                  d             }t        j                  t        |       }t        j                         | _        | j                  j                  |       | j                  j                  |       | j                  S )z"Set correct class color for a itemr   r0  )r'   r8  r4  r5  r3  rz   ContrastColorItemAttrlSetBackgroundColourSetTextColour)r+   rR  back_ctext_cs       r,   OnGetItemAttrzCategoryListCtrl.OnGetItemAttr7  s~    CT%7%7a%@%F%Fs%KLMM&12 ""6*V$vvr.   N)r   r   r   r   r'   r<   r/   r   r  r   r   r   LIST_STATE_SELECTEDr  r   r   r   rO  r   r3  r[  rd  r   r.   r,   r   r   t  sh     :< ";H@7*$72, (*'='= 
,
&-
&3
	r.   r   c                 `    dd| d   z  d| d   z  z   d| d   z  z   dz  z
  }|dk  rd}nd}|||fS )	zDecides which value should have text to be contrast with background color
        (bright bg -> black, dark bg -> white)

    .. todo::
        could be useful by other apps, consider moving it into gui_core
    r   gA`"?r   gbX9?gv/?r      g      ?r   )r   ads      r,   r]  r]  C  sU     	
UU1Xa 005583CCsJJA3wq!9r.   c                   ~    e Zd Zd ed      ej
                  ej                  ej                  z  fdZd Z	d Z
ddZy)IClassSignatureFileDialogNzSave signature filec                    t        j                  j                  | |||fd|i| || _        t	        j
                         }t        j                  j                  |d   |d   |d   dd      | _	        t        j                  | t         j                        | _        t        | j                  t         j                        | _        t        | j                  t         j                         | _        | j"                  j%                          | j"                  j'                  d       | j)                          | j*                  j-                  t         j.                  | j0                         | j1                  d	       y	)
zDialog for saving signature file

        :param parent: window
        :param file: signature file name
        :param title: window title
        r   GISDBASELOCATION_NAMEr   
signaturessigr   FN)r'   r   r/   fileNamer3   r4   ospathr?  baseFilePathr   r<   r2   r   	ID_CANCEL	btnCancelr<  btnOK
SetDefaultEnable"_IClassSignatureFileDialog__layoutfileNameCtrlr?   rC   OnTextChanged)r+   r   filerI   r#   r   r   envs           r,   r/   z"IClassSignatureFileDialog.__init__W  s    			4UJ%J6Jlln
 GGLL
OS13x=,PU
 XXTbii8
tzzbllC4::"((;




% r{{D,>,>?4 r.   c                    | j                   j                         }t        |      dkD  r| j                  j	                  d       n| j                  j	                  d       t
        j                  j                  | j                  |      }| j                  j                  |       | j                  j                         }| j                  j                  |        | j                  j                  |  y)zName for signature file givenr   TFN)r{  r_   r   rw  ry  rr  rs  r?  rt  filePathTextSetLabel	pathPanelGetBestVirtualSizeSetVirtualSizeScroll)r+   r*   r}  rs  bestSizes        r,   r|  z'IClassSignatureFileDialog.OnTextChanged~  s      ))+t9q=JJd#JJe$ww||D--t4""4(>>446%%h/x(r.   c           	      d   t        j                  t         j                        }t        j                  t         j                        }|j                  t	        | j
                  t         j                  t        d            dt         j                  d       t        | j
                  t         j                  d      | _
        | j                  r%| j                  j                  | j                         |j                  | j                  dt         j                  t         j                  z  d       |j                  t	        | j
                  t         j                  t        d            dt         j                  d       t        j                  | j
                  d	
      | _        t        j                         }t	        | j                   t         j                  | j"                        | _        |j                  | j$                  dt         j                  t         j                  z  d       | j                   j'                  dd       | j                   j)                  |       |j                  | j                   dt         j                  t         j                  z  d       t        j*                         }|j-                  | j.                         |j-                  | j0                         |j3                          |j                  |dt         j                  t         j                  z  d       |j                  |dt         j                  t         j                  z  d       | j
                  j)                  |       |j5                  |        | j7                  | j9                                y)rK   zEnter name of signature file:r"   r   r   rN   )r   r   )r   r#   r   zSignature file path:)r   (   )r   r   TF)scroll_xscroll_yrM   N)r'   r   r   rS   r   r2   r<   r=   rX   r   r{  rq  r;   rT   scrolledScrolledPanelr  rt  r  SetupScrollingrY   StdDialogButtonSizer	AddButtonrv  rw  Realizer[   rF   rG   )r+   rZ   rR   	pathSizerr   s        r,   __layoutz"IClassSignatureFileDialog.__layout  s   BKK(KK,	zz9978
  	 		
 %DJJ2999U==&&t}}5!"&&2992DQ 	 	
 	zzbiiq9O7P  	 	
 "//

JKKM	&>>biit7H7H
 	!"&&2992DQ 	 	
 	%%te%D	*dnn"))9KTUV **,4>>*4::&		)		BFF0B1	M		(qryy266/A!	L

E"		$'r.   c                     |rBt         j                  j                  | j                  | j                  j                               S | j                  j                         S )z\Returns signature file name

        :param fullPath: return full path of sig. file
        )rr  rs  r?  rt  r{  r_   )r+   fullPaths     r,   GetFileNamez%IClassSignatureFileDialog.GetFileName  sF    
 77<< 1 143D3D3M3M3OPP  ))++r.   )F)r   r   r   r=   r'   r<   DEFAULT_DIALOG_STYLERESIZE_BORDERr/   r|  rz  r  r   r.   r,   rk  rk  V  sA     %&99%%(8(88%!N):(x,r.   rk  c                       e Zd Zd ed      ej
                  ej                  ej                  z  fdZd Z	d Z
d Zd Zd Zy)	IClassExportAreasDialogNzExport training areasc                 &   t        j                  j                  | |||fd|i| || _        t        j                  | t         j
                        | _        t        | j                  t         j                        | _	        t        | j                  t         j                        | _        | j                  j                          | j                  j                  d       | j                  j                  t         j                  | j                          | j#                          | j$                  j                  t         j&                  | j(                         | j)                  d       t        j*                  | j$                  j,                         y)zDialog for export of training areas to vector layer

        :param parent: window
        :param vectorName: name of vector layer for export
        :param title: window title
        r   r   FN)r'   r   r/   
vectorNamer   r<   r2   r   ru  rv  r<  rw  rx  ry  r?   r@   OnOK _IClassExportAreasDialog__layoutvectorNameCtrlrC   r|  r(   r:   )r+   r   r  rI   r#   r   r   s          r,   r/   z IClassExportAreasDialog.__init__  s     			4UJ%J6J$XXTbii8
tzzbllC4::"((;




% 

tyy1  d.@.@A4 
T((112r.   c                     | j                   j                         }t        |      dkD  r| j                  j	                  d       y| j                  j	                  d       y)zIName of new vector map given.

        Enable/disable OK button.
        r   TFN)r  r_   r   rw  ry  )r+   r*   r}  s      r,   r|  z%IClassExportAreasDialog.OnTextChanged  sG    
 ""++-t9q=JJd#JJe$r.   c           	          t        j                  t         j                        }t        j                  t         j                        }|j                  t	        | j
                  t         j                  t        d            dt         j                  d       t        j                  | j
                  dt        j                         d   gt        j                        | _        | j                   r%| j                  j#                  | j                          |j                  | j                  dt         j                  t         j$                  z  d       t'        | j
                  t         j                  t        d	            | _        | j(                  j#                  d
       | j(                  j+                  t        d             |j                  | j(                  dt         j                  d       t        j,                         }|j/                  | j0                         |j/                  | j2                         |j5                          |j                  |dt         j$                  t         j                  z  d       |j                  |dt         j$                  t         j                  z  d       | j
                  j7                  |       |j9                  |        | j;                  | j=                                y)rK   zEnter name of new vector map:r"   r   r   rN   r   r   )r   r   r   r   zExport attribute tableTz;Export attribute table containing computed statistical datar   rM   N)r'   r   r   rS   r   r2   r<   r=   rX   r
   r1   r3   r4   r   r5   r  r  r;   rT   r   withTableCtrl
SetToolTipr  r  rv  rw  r  rY   r[   rF   rG   )r+   rZ   rR   r   s       r,   r  z IClassExportAreasDialog.__layout  s   BKK(KK,	zz9978
  	 		
 &nn::\\^H-...	
 ??((9ABFFRYY4Fq 	 	
 &::"))15M3N
 	##D)%%NO	
 	d((QRVVAN **,4>>*4::&		)		BFF0B1	M		(qryy266/A!	L

E"		$'r.   c                 6    | j                   j                         S )zReturns vector name)r  r_   r\   s    r,   GetVectorNamez%IClassExportAreasDialog.GetVectorName3  s    ""++--r.   c                 6    | j                   j                         S )z6Returns true if attribute table should be exported too)r  	IsCheckedr\   s    r,   	WithTablez!IClassExportAreasDialog.WithTable7  s    !!++--r.   c                    t        j                  ddd      }| j                         }t        j                  |d      }|d   r|du rt        j                  | t        d	|z        t        d
|z        t
        j                  t
        j                  z  t
        j                  z  t
        j                  z        }|j                         t
        j                  k(  r|j                          |j                          y|j                          y)z,Checks if map exists and can be overwritten.cmd	overwriteenabled)r   keysubkeyr   )r}   fullnameFz<Vector map <%s> already exists. Do you want to overwrite it?zVector <%s> exists)r   r   captionr   N)r   r>  r  r3   r   r'   MessageDialogr=   YES_NO
NO_DEFAULTICON_QUESTIONCENTRErm   ID_YESr@  rp   )r+   r*   r  vNamer   qdlgs         r,   r  zIClassExportAreasDialog.OnOK;  s     $$5k)T	""$ooeX6z?yE1##46;< .67ii"--/"2B2BBRYYND ~~299,

LLNJJLr.   )r   r   r   r=   r'   r<   r  r  r/   r|  r  r  r  r  r   r.   r,   r  r    sK     '(99%%(8(883@	%2(h..r.   r  )0r   rr  r'   wx.lib.mixins.listctrllibmixinslistctrlr   wx.lib.scrolledpanelscrolledpanelr  corer   core.settingsr   	core.gcmdr   r   r   gui_core.dialogsr   r	   gui_corer
   gui_core.widgetsr   gui_core.wrapr   r   r   r   r   r   r   r   grass.scriptscriptr3   r   r   r   r   r   r   r   r]  rk  r  r   r.   r,   <module>r     s   * 
 	 ( ( ' '  & 2 2 6  ,	 	 	 |V |V~/'l /'dP")) PfLx!?!?AVAV L^&z,		 z,z{bii {r.   