
    ը	fYc                        d Z ddlZddlZddlZddlmc mc mZ ddl	m
Z
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  G d dej.                  ej0                        Z G d d	eej4                  ej6                        Z G d
 dej.                        Z G d dej.                        Z G d deej4                  e      Zy)a  
@package vdigit.dialogs

@brief wxGUI vector digitizer dialogs

Classes:
 - dialogs::VDigitCategoryDialog
 - dialogs::CategoryListCtrl
 - dialogs::VDigitZBulkDialog
 - dialogs::VDigitDuplicatesDialog
 - dialogs::CheckListFeature

(C) 2007-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 Martin Landa <landa.martin gmail.com>
    N)
RunCommandGError)Debug)SpinCtrlButton
StaticText	StaticBoxMenuListCtrlNewIdCheckListCtrlMixinc                       e Zd Zddej                  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d Zd Zd Zd Zd Zd Zd Zd ZddZy)VDigitCategoryDialogNc           	          | _         |j                   _        | _        i  _        |> j	                  |d   |d         dk(  s j
                  st        j                  dd       n| _        |j                         D ];  }||   j                         D ]#  }	t        ||   |	          j                  |   |	<   % = g }
 j                  j                         D ]  }	|
j                  t        |	              t        j                   j                         _        t!        j"                  j$                   f j                   t         j&                  ||d| t)         t         j&                  dt+        d      z  	      }t!        j,                  |t         j.                        }t1         t         j&                  t         j2                  t         j4                  z  t         j6                  z  t         j8                  z  t         j:                  z  
       _	        t         j                  j                               d    _         j                  j?                   j                   j<                            _         tB        jD                  j%                   d       t!        jF                   t         j&                  d       _$         jH                  jK                  t         jL                   jN                         tQ         t         j&                         _)        tU         j                  j                               dk(  rJ jH                  jW                  d        jR                  jY                  t         j<                               n jR                  jW                  d       g } j                  j                         D ]  }|j                  t        |               jH                  j[                  |        jH                  j]                  d       |j_                   j                  dt         j`                         t)         t         j&                  dt+        d      z  	      }t!        j,                  |t         j.                        }t!        jb                  ddd      }|je                  d       tQ         t         j&                  dt+        d      z  	      }t!        jF                   t         j&                  d
       _3        tU        |
      dkD  r jf                  j]                  d       tQ         t         j&                  dt+        d      z  	      }	 ti         j                   j<                     d         dz   }tm         t         j&                  d|dd       _7        tq         t         jr                        }|j_                  |dt         jt                  t         jv                  z         |j_                   jf                  dt         jt                  t         jv                  z         |j_                  |dt         jv                  t         jx                  z  t         jz                  z  d       |j_                   jn                  dt         jt                  t         jv                  z         |j_                  |dt         j`                  t         jx                  z  t         jt                  z         |j_                  |dt         j|                  t         j`                  z  d       tq         t         j~                        }|j                  t+        d             tq         t         j                        }|j                  t+        d             tq         t         j                        }|j                  t+        d             |j                          t!        j                         }|j                  |       |j                  |       |j                  |       |j                          t!        j                  t         j.                        }|j_                  |dt         j`                  t         j|                  z  d       |j_                  |dt         j`                  t         jz                  z  t         j                  z  t         j                  z  d       t!        j                  t         j                        }|j_                  tQ         t         j&                  t+        d       	      ddt         jv                  !       |j_                   jH                  dt         j`                  t         j|                  z  d       |j_                   jR                  dt         j`                  t         j|                  z  d       |j_                  |dt         j`                  t         j|                  z  d       |j_                  |dt         j`                  t         j|                  z  d        j                  |       |j                           j                  d"        j                   j                                |jK                  t         j                   j                         |jK                  t         j                   j                         |jK                  t         j                   j                         |jK                  t         j                   j                          jK                  t         j                   fd#        j                  jK                  t         j                   j                          j                  jK                  t         j                   j                          jK                  t         j                   j                   j                          jK                  t         j                   j                   j                          jK                  t         j                   j                   j                         y# tj        $ r d}Y w xY w)$a0  Dialog used to display/modify categories of vector objects

        :param parent:
        :param title: dialog title
        :param query: {coordinates, qdist} - used by v.edit/v.what
        :param cats: directory of lines (layer/categories) - used by vdigit
        :param style: dialog style
        Nr         &VDigitCategoryDialog(): nothing found!parentidtitlestyle %s z*List of categories - right-click to deleter   r   labelr   r   r      )   )r   r   sizer   r   F
proportionflagzAdd new category   colshgapvgapz%s:Layer)K   r   )r   r   r    choicesCategoryg    eA)r   r   r    initialminmax
   r#   r$   borderzApply changeszIgnore changes and close dialogzApply changes and close dialogzFeature id:)r#   r3   r$   Tc                 $    j                         S )N)Hide)evtselfs    //usr/lib/grass83/gui/wxpython/vdigit/dialogs.py<lambda>z/VDigitCategoryDialog.__init__.<locals>.<lambda>   s    DIIK     )_r   digit
vectorNamecats_getCategoriesliner   msgkeyslist	GetLayersappendstrcopydeepcopy	cats_origwxDialog__init__ID_ANYr	   _StaticBoxSizerVERTICALCategoryListCtrl	LC_REPORTBORDER_NONELC_SORT_ASCENDING	LC_HRULES	LC_VRULESfidPopulateitemDataMaplistmixColumnSorterMixinChoicefidMultiBind
EVT_CHOICE	OnFeaturer   fidTextlenShowSetLabelSetItemsSetSelectionAddEXPANDFlexGridSizerAddGrowableCollayerNewr0   KeyErrorr   catNewr   ID_ADDFIXED_MINSIZEALIGN_CENTER_VERTICALALIGN_RIGHTLEFTALLID_APPLY
SetToolTip	ID_CANCELID_OK
SetDefaultStdDialogButtonSizer	AddButtonRealizeBoxSizerRIGHTBOTTOM
HORIZONTALSetSizerFitSetAutoLayout
SetMinSizeGetBestSize
EVT_BUTTONOnApplyOnOKOnAddCatOnCancel	EVT_CLOSEEVT_COMMAND_RIGHT_CLICK	OnRightUpEVT_RIGHT_UPEVT_LIST_BEGIN_LABEL_EDITOnBeginEditEVT_LIST_END_LABEL_EDIT	OnEndEditEVT_LIST_COL_CLICK
OnColClick)r7   r   r   r<   queryr=   r   kwargsr?   layerlayersbox	listSizerr,   rV   addSizer	flexSizerlayerNewTxt	catNewTxtnewCat	btnAddCatbtnApply	btnCancelbtnOkbtnSizer	mainSizerfidSizers   `                          r8   rK   zVDigitCategoryDialog.__init__*   s   $ \\
 % 	 <""58U1X6!;499		!EFDI		 E!$Z__. EE-1$t*U2C-DDIIdOE*EE F--/ *c%j)* tyy1
			
%u	
PV	

 yy1IJJ

 %%c2;;7	$yy,,nn""# ll ll	
	 		()!,99--dii.AB!!**43		")))L2==$..9!"))<tyy~~ A%MMu%LL!!#dhh-0LLe$Gyy~~' )s3x()MM""7+MM&&q)diiABII> t		!DVBW9WX$$S"++6$$!!!<	  # %!G*BTU		BIIHf
 v;?MM&&q)dryy*@UV		488,Q/014F BIIHf!QT
 4+	AB,<,<r?W?W,W 	 	
 	MM!!B$<$<< 	 	

 	))BNN:RWWD	 	 	
 	KKAB,<,<r?W?W,W 	 	
 	!"))bnn*DrGWGW*W 	 	
 	Y1266BII3EaP $,Ao./4.	Q@ABtRXX&;<= **,9% 	8$5!KK,	iABII4FqQRWW$rxx/"));	 	 	
 ;;r}}-dryy-8HI))	 	 	
 	T]]qryy2667IRSTT\\abii"&&6HQRSh1299rvv3EaPh1299rvv3EaPi d4  	((*+ 	bmmT\\2

2==$)),r}}dmm4r}}dmm4		",, 78 			r114>>B		r7		"..0@0@$))L		",,dnndiiH		"''$))Dk  	F	s   (q qqc                     | j                   S )zUsed by ColumnSorterMixin)rB   r7   s    r8   GetListCtrlz VDigitCategoryDialog.GetListCtrl   s    yyr:   c                 $    |j                          y)z!Click on column header (order by)NSkipr7   events     r8   r   zVDigitCategoryDialog.OnColClick       

r:   c                 $    |j                          y)zEditing of item startedN)Allowr   s     r8   r   z VDigitCategoryDialog.OnBeginEdit   s    r:   c           
         |j                         }t        | j                  j                  |d      j	                               }t        | j                  j                  |d      j	                               }|j                         dk(  rt        |j                               }|}n|}t        |j                               }	 || j                  | j                     j                         vrg | j                  | j                     |<   | j                  | j                     |   j                  |       | j                  | j                     |   j                  |       y#  |j                          | j                  j                  |dt        |             | j                  j                  |dt        |             t        j                   | t#        d      | j$                  j'                         t        | j(                  j+                               dz  t#        d      t        j,                  t        j.                  z        }|j1                          |j3                          Y yxY w)zFinish editing of itemr   r   Unable to add new layer/category <%(layer)s/%(category)s>.
Layer and category number must be integer.
Layer number must be greater than zero.r   categoryErrorFN)GetIndexintrB   GetItemGetText	GetColumnGetLabelr=   rV   rA   rD   removeVetoSetItemrE   rI   MessageDialogrM   rj   GetStringSelectionrl   GetValueOK
ICON_ERROR	ShowModalDestroy)r7   r   	itemIndexlayerOldcatOldrj   rl   dlgs           r8   r   zVDigitCategoryDialog.OnEndEdit   s   NN$	tyy((A6>>@ATYY&&y!4<<>???!5>>+,HFH)*F	tyy2779902		$((#H-IIdhh)008IIdhh)008	JJLIIiCM:IIiCK8""> "]]==? #DKK$8$8$: ; '
%C MMOKKMs   BE DI&c                 &   |j                         }|j                         }| j                  j                  ||f      \  }}|t        j
                  k7  r.|t        j                  z  r| j                  j                  |       |j                          y)zMouse right button downN)	GetXGetYrB   HitTestrI   	NOT_FOUNDLIST_HITTEST_ONITEMSelectr   )r7   r   xyitemflagss         r8   OnRightDownz VDigitCategoryDialog.OnRightDown  sh    JJLJJLii''A/e2<<EB,B,B$BIIT"

r:   c                    t        | d      st               | _        t               | _        t               | _        | j                  t        j                  | j                  | j                         | j                  t        j                  | j                  | j                         | j                  t        j                  | j                  | j                         t               }|j                  | j                  t        d             | j                  j                         dk(  r|j!                  | j                  d       |j                  | j                  t        d             |j#                          |j                  | j                  t        d             | j%                  |       |j'                          y)	zMouse right button uppopupID1)r   zDelete selectedr   Fz
Delete allReloadN)hasattrr   r   popupID2popupID3r]   rI   EVT_MENUOnItemDeleteOnItemDeleteAllOnReloadr
   AppendrM   rB   GetFirstSelectedEnableAppendSeparator	PopupMenur   )r7   r   menus      r8   r   zVDigitCategoryDialog.OnRightUp%  s   tZ(!GDM!GDM!GDMIIbkk4#4#4IGIIbkk4#7#7DMMIJIIbkk4==T]]IC vDMM1%6#7899%%'2-KKu-DMM1\?3DMM1X;/tr:   c                 $    |j                          y)zItem selectedNr   r   s     r8   OnItemSelectedz#VDigitCategoryDialog.OnItemSelected<  r   r:   c                    | j                   j                         }|dk7  rt        | j                   j                  |d      j	                               }t        | j                   j                  |d      j	                               }| j                   j                  |       | j                  | j                     |   j                  |       | j                   j                         }|dk7  r|j                          y)z;Delete selected item(s) from the list (layer/category pair)r   r   r   N)
rB   r   r   r   r   
DeleteItemr=   rV   r   r   )r7   r   r   r   cats        r8   r   z!VDigitCategoryDialog.OnItemDelete@  s    yy))+bj		))$2::<=Edii''a088:;CII  &IIdhh&--c299--/D bj 	

r:   c                     | j                   j                          i | j                  | j                  <   |j	                          y)zDelete all items from the listN)rB   DeleteAllItemsr=   rV   r   r   s     r8   r   z$VDigitCategoryDialog.OnItemDeleteAllM  s-    		  " 		$((

r:   c                 |   t        |j                               | _        | j                  j	                  | j
                  | j                     d      | _        	 t        | j
                  | j                     d         dz   }| j                  j                  |       |j                          y# t        $ r d}Y 9w xY w)z"Feature id changed (on duplicates)Tupdater   N)r   	GetStringrV   rB   rW   r=   rX   r0   rk   rl   SetValuer   )r7   r   r   s      r8   r_   zVDigitCategoryDialog.OnFeatureT  s    u()99--dii.A$-O	488,Q/014F 	V$

  	F	s   (B- -B;:B;c                 ~   t        d| d| j                  dt        |d         t        |d         fz  |      }|sy|j                         D ]  }|j	                         }d|v r1t        |j                  d	      d   j                               | _        Hd
|v rXt        |j                  d	      d   j                               }|| j                  j                         vsg | j                  |<   d|v s| j                     j                  t        |j                  d	      d   j                                       y)zzGet layer/category pairs for all available
        layers

        :return: True line found or False if not found
        zv.whatTz%f,%fr   r   )r   quietmap
east_northdistanceFzid::zlayer:z	category:)r   r<   float
splitlineslowerr   splitstripr?   r=   rA   rD   )r7   coordsqdistretr   litemr   s          r8   r>   z#VDigitCategoryDialog._getCategoriesc  s    %q	"2E&)4D!EE
 NN$ 		IDJJLE~

3 2 8 8 :;	U"DJJsOA.4467		 00')DIIe$%		% ''DJJsOA,>,D,D,F(GH		I r:   c                     t        j                  | j                        | _        | j                  j                  | j                  | j                     d      | _        |j                          y)zReload button pressedTr   N)	rF   rG   rH   r=   rB   rW   rV   rX   r   r   s     r8   r   zVDigitCategoryDialog.OnReload  sL     MM$..1	  99--dii.A$-O

r:   c                 X   d| j                   j                   j                  d<   | j                  rF| j                  j                         j	                  g        | j                   j                  d       n%| j                   j                   j                  d       | j                          y)zCancel button pressedNr   F)render)r   dialogsr;   
GetDisplaySetSelected	UpdateMapOnRenderCloser   s     r8   r   zVDigitCategoryDialog.OnCancel  st    15"":.::JJ!!#//3KK!!!/KK''-

r:   c                     | j                   j                         D ]0  }| j                  |      }|| j                  k(  s$|dkD  s*|| _        2 y)zApply button pressedr   N)r=   rA   ApplyChangesrV   )r7   r   rV   newfids       r8   r   zVDigitCategoryDialog.OnApply  sD    99>># 	"C&&s+Fdhh6A:!	"r:   c           	      ~   | j                   |   }| j                  |   }||f||fd}d}t        j                  |      D ]  \  }}|d   j	                         D ]  }g }	|d   |   D ]3  }
||d   j	                         vs|
|d   |   vs#|	j                  |
       5 |	g k7  sJ|dk(  rd}nd}| j                  j                  |||	|      }t        | j                   j	                               dk(  r| j                  j                  d|z         n| j                  j                         }t        |      ||j                  t        |            <   | j                  j                  |       | j                  j!                  t        |             | j                   |   | j                   |<   | j                   |= |}| j"                  dk  srt%        j&                  | t)        d	      t)        d
      t$        j*                  t$        j,                  z           t/        j0                  |      | j                  |<   |S )z6Apply changes

        :param fid: feature id
        )cataddcatdelr   r   r   r  TF%dzUnable to update vector map.r   )r   messagecaptionr   )r=   rH   six	iteritemsrA   rD   r;   SetLineCatsra   r`   rc   r\   GetItemsrE   indexrd   SetStringSelectionrV   rI   
MessageBoxrM   r   r   rF   rG   )r7   rV   r=   rH   checkr  actioncatsCurrr   catListr   addr,   s                r8   r
  z!VDigitCategoryDialog.ApplyChanges  s   
 yy~NN3'	 !),D8IJ !$e 4 	FH!!))+ #A;u- ,CHQK$4$4$66#Xa[QVEW:Ws+, b=)"#!ZZ33CMF499>>+,1--dVm<"&--"8"8":;>v;c#h 78..w788VE(,		#DIIf%		# Cxx!|#'$%&D$E$%gJ"$%%"--"7	3	B #mmD1sr:   c                 H    | j                  |       | j                  |       y)zOK button pressedN)r   r   r   s     r8   r   zVDigitCategoryDialog.OnOK  s    Uer:   c           
      2   	 t        | j                  j                               }t        | j                  j	                               }|dk  rt
        	 || j                  | j                     j                         vrg | j                  | j                     |<   | j                  | j                     |   j                  |       | j                  j                  | j                  | j                     d      | _        | j                  j!                  |dz          |j#                          y# t
        $ ra t        | t        d      t        | j                  j	                               t        | j                  j	                               dz         Y yw xY w)	z!Button 'Add' new category pressedr   r   r   )r   r  FTr   r   )r   rj   r   rl   r   
ValueErrorr   rM   rE   r=   rV   rA   rD   rB   rW   rX   r   r   )r7   r   r   r   s       r8   r   zVDigitCategoryDialog.OnAddCat  sQ   	88:;Edkk**,-Cz   " 		$((+0022)+DIIdhh&		$((E"))#.  99--dii.A$-O 	S1W%

9  	> !!7!7!9: #DKK$8$8$: ; 	s   AD, ,A'FFc                 6    | j                   j                         S )z8Get id of selected line of 'None' if no line is selected)r=   rA   r   s    r8   GetLinezVDigitCategoryDialog.GetLine  s    yy~~r:   c                    i | _         || j                  |d   |d         }nW|| _         |j                         D ];  }||   j                         D ]#  }t        ||   |         | j                   |   |<   % = d}|dk(  s&t	        | j                   j                               dk  rt        j                  dd       yt        j                  | j                         | _	        t        | j                   j                               d   | _
        | j                  j                  | j                   | j                     d      | _        	 t        | j                   | j                     d         dz   }| j                  j!                  |       t	        | j                   j                               dk(  r_| j"                  j%                  d       | j&                  j%                  d       | j"                  j)                  d| j                  z         n| j"                  j%                  d       | j&                  j%                  d       g }| j                   j                         D ]  }|j+                  t-        |              | j&                  j/                  |       | j&                  j1                  d       | j3                          y# t        $ r d}Y fw xY w)	zUpdate dialog

        :param query: {coordinates, distance} - v.what
        :param cats:  directory layer/cats    - vdigit
        :return: True if updated otherwise False
        r   r   r   r   FTr   r  )r=   r>   rA   rB   ra   r   r@   rF   rG   rH   rV   rW   rX   r0   rk   rl   r   r`   rb   r\   rc   rD   rE   rd   re   Layout)	r7   r   r=   r   r?   r   r   r,   rV   s	            r8   UpdateDialogz!VDigitCategoryDialog.UpdateDialog  sA    	<%%eAha9CDI		 E!$Z__. EE-1$t*U2C-DDIIdOE*EE C!8s499>>+,q0IIaAB tyy1 		()!,99--dii.A$-O	488,Q/014F 	V$tyy~~ A%LLd#MMu%LL!!$/2LLe$MMt$Gyy~~' )s3x()MM""7+MM&&q)'  	F	s   (K KK)NN)__name__
__module____qualname__rI   DEFAULT_DIALOG_STYLERESIZE_BORDERrK   r   r   r   r   r   r   r   r   r   r_   r>   r   r   r   r
  r   r   r"  r%   r:   r8   r   r   )   s     %%(8(88zEx&P	.>	"1f
#J 2r:   r   c                   J    e Zd Zej                  ej
                  dfdZddZy)rP   r   c                     || _         t        j                  | |||||       t        j                  j                  |        t        j
                  j                  |        y)zList of layers/categoriesN)r   r   rK   rY   ListCtrlAutoWidthMixinTextEditMixin)r7   r   r   posr    r   s         r8   rK   zCategoryListCtrl.__init__5  sK     $Cu=&&//5&&t,r:   c           	         i }|s7| j                  dt        d             | j                  dt        d             n| j                          d}|j                         D ]  }||   }|D ]  }| j	                  | j                         t        |d               }| j                  |dt        |             | j                  |dt        |             | j                  ||       t        |      t        |      f||<   |dz   }  |s2| j                  dd       | j                  dt        j                         d| _        |S )zPopulate the listr   r*   r   r-   d   )InsertColumnrM   r   rA   
InsertItemGetItemCountrE   r   SetItemDataSetColumnWidthrI   LIST_AUTOSIZEcurrentItem)	r7   r=   r   itemDatair   catsListr   r  s	            r8   rW   zCategoryListCtrl.Populate@  s!   a7,a:/!YY[ 	EE{H (9(9(;S!=MNUAs5z2UAs3x0  *"5z3s84E	 3'2#3#34r:   N)F)r&  r'  r(  rI   DefaultPositionDefaultSizerK   rW   r+  r:   r8   rP   rP   4  s     00r~~Q	-r:   rP   c                   *    e Zd Zej                  fdZy)VDigitZBulkDialogc                     t         j                  j                  | |t         j                  ||       || _        t        j
                  t         j                        }t        | t        d      |z        }|j                  |dt         j                  t         j                  z  d       t        | t         j                  dt        d      z  	      }t        j                  |t         j                        }t        j                  d
dd      }	|	j                  d       t        | t        d            }t!        | t         j                  ddd      | _        |	j                  |dt         j$                         |	j                  | j"                  dt         j&                  t         j(                  z         t        | t        d            }t!        | t         j                  ddd      | _        |	j                  |dt         j$                         |	j                  | j*                  dt         j&                  t         j(                  z         |j                  |	dt         j                  t         j                  z  d       |j                  |dt         j                  t         j                  z  d       t-        | t         j.                        }
t-        | t         j0                        }|j3                          t        j4                         }|j7                  |
       |j7                  |       |j9                          t        j
                  t         j                        }|j                  |dt         j                  t         j                  z  d       |j                  |dt         j                  t         j                  z  t         j&                  z  d       | j;                  |       |j=                  |        y)z$Dialog used for Z bulk-labeling toolr   z%%d lines selected for z bulk-labeling)r   r   r   r%   r2   r   z	Set valuer   r   r&   zStarting valueg    .g    .A)r   r   r.   r/   r0   r"   Stepr   N)rI   rJ   rK   rL   r   r{   rO   r   rM   rf   rr   rg   r	   rN   rh   ri   r   valuero   ALIGN_CENTERrn   stepr   ru   rv   rw   rx   ry   rz   r   r   )r7   r   r   	nselectedr   r3   txtr   sizerr   r   r   r   r   s                 r8   rK   zVDigitZBulkDialog.__init___  s   
		4299EQVW R[[)q!HIIU
 	

31266BII+=a
Ht		!K.9PQ!!#r{{3$$!!!<	  # A.>,?@TbiiRUV
cab.F.FGdjjQR__rGWGW5WX AfI6DRYYqcR	cab.F.FGdiiABOObFVFV4VW		)0B1	M

5QRVVbii-?
J 4.	tRXX& **,9%5!KK,	fRVV1CANRVV);boo)MVW 	 	
 	i dr:   N)r&  r'  r(  rI   r)  rK   r+  r:   r8   r@  r@  ^  s    797N7N 5r:   r@  c                   n    e Zd Z ed      ej
                  ej                  z  ej                  fdZd Z	y)VDigitDuplicatesDialogzList of duplicatesc                 D   t         j                  j                  | |t         j                  |||       || _        || _        g | _        t        j                  | t         j                  t         j                        | _	        d}| j
                  j                         D ]  }t        j                  | j                  t         j                        }| j                  j                  |d|z         t        j                  t         j                        }	t        |t!        | j
                  |               }
| j                  j#                  |
j%                                |	j'                  |
dt         j(                  t         j*                  z  d	       |j-                  |	       |dz  } t/        | t         j0                        }t/        | t         j2                        }|j5                          t        j6                         }|j9                  |       |j9                  |       |j;                          t        j                  t         j                        }|j'                  | j                  dt         j*                  t         j(                  z  d	       |j'                  |d
t         j*                  t         j(                  z  t         j<                  z  d	       | j-                  |       |j?                  |        | jA                  d       | jC                  d       y)zShow duplicated feature ids)r   r   r   r   r0  r   r   r!   z %d )pagetext)r   datar%   r2   r   T)      N)"rI   rJ   rK   rL   r   rN  winListNotebook
BK_DEFAULTnotebookrA   PanelAddPager{   rO   CheckListFeaturerB   rD   GetIdrf   rr   rg   r   r   ru   rv   rw   rx   ry   rz   rD  r   r   r   )r7   r   rN  r   r   r0  r   keypanelr3   winr   r   r   r   s                  r8   rK   zVDigitDuplicatesDialog.__init__  s3    			BIIU%S 	 	
 	
 4BIIR]]S99>># 	CHHDMMbii@EMM!!u6R=!A [[-F"%d499S>6JKCLL		,JJsqrvv		/A!JLNN6"!GB	" 4.	tRXX& **,9%5!KK,	dmm		BFF8JSTURVV);boo)MVW 	 	
 	i d4  	
#r:   c           
         g }| j                   D ]{  }| j                  |      }t        |j                               D ]L  }|j	                  |      r|j                  t        |j                  |d      j                                      N } |S )zHGet unselected items (feature id)

        :return: list of ids
        r   )	rQ  FindWindowByIdranger5  IsItemCheckedrD   r   r   r   )r7   idsr   wlistr   s        r8   GetUnSelectedz$VDigitDuplicatesDialog.GetUnSelected  s    
 ,, 	FB''+Ee0023 F**40JJs5==q#9#A#A#CDEF	F 
r:   N)
r&  r'  r(  rM   rI   r)  r*  r=  rK   rb  r+  r:   r8   rJ  rJ    s5    
 $%%%(8(88=$~r:   rJ  c                   8    e Zd Zej                  dfdZd Zd Zy)rW  Nc                 6   || _         || _        t        j                  | |t        j
                  t        j                         t        j                  |        || _        t        j                  j                  |        | j                  | j                         y)zList of mapset/owner/group)r   N)r   rN  r   rK   rI   rL   rQ   r   logrY   r.  LoadData)r7   r   rN  r0  re  s        r8   rK   zCheckListFeature.__init__  sg    	$		F##D) 	&&//5dii r:   c           	         | j                  dt        d             | j                  dt        d             |D ]M  }| j                  | j                         t	        |d               }| j                  |dt	        |d                O t        | j                               D ]  }| j                  |d        | j                  dt        j                         | j                  dt        j                         y)zLoad data into listr   z
Feature idr   zLayer (Categories)T)colwidthN)r3  rM   r4  r5  rE   r   r^  	CheckItemr7  rI   LIST_AUTOSIZE_USEHEADER)r7   rN  r   r  s       r8   rf  zCheckListFeature.LoadData  s    !Q|_-!Q345 	1DOOD$5$5$7T!WFELL3tAw<0	1
 $++-. 	'DNN4&	' 	)C)CD)C)CDr:   c                      y)zMapset checked/uncheckedNr+  )r7   r  r$   s      r8   OnCheckItemzCheckListFeature.OnCheckItem  s    r:   )r&  r'  r(  rI   r=  rK   rf  rm  r+  r:   r8   rW  rW    s    )+);); ! E r:   rW  ) __doc__rF   r  rI   wx.lib.mixins.listctrllibmixinslistctrlrY   	core.gcmdr   r   
core.debugr   gui_core.wrapr   r   r   r	   r
   r   r   r   rJ   rZ   r   r.  r/  rP   r@  rJ  rW  r+  r:   r8   <module>rv     s   (  
 	 ( ( ( 	 	 	H299g&?&? HV'x!?!?AVAV 'T6		 6rMRYY M`#x!?!?AS #r:   