
    ը	f                          d Z ddlZddlZddlmZ ej
                  r	 ddlmZ n	ddlmc 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  G d d	ej0                  e      Zy# e	$ r ddl
mc mc mZ Y Fw xY w)
a  
@package dbmgr.manager

@brief GRASS Attribute Table Manager

This program is based on FileHunter, published in 'The wxPython Linux
Tutorial' on wxPython WIKI pages.

It also uses some functions at
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/426407

List of classes:
 - manager::AttributeManager

(C) 2007-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 Jachym Cepicky <jachym.cepicky gmail.com>
@author Martin Landa <landa.martin gmail.com>
@author Refactoring by Stepan Turek <stepan.turek seznam.cz> (GSoC 2012, mentor: Martin Landa)
    N)	globalvar)GMessage)	DbMgrBase)	GNotebook)ButtonClearButtonCloseButtonc                   `    e Zd Zej                  ddddddfdZd Zd Zd Zd Z	d Z
d Zd	 Zy)
AttributeManagerNc	           
         || _         	 | j                   j                         }
t        j                  | f||
|||| d|	 t	        j
                  j                  | ||g|	  |sY|st        d      }| j                  d   }| j                  d   st        d      j                  |      }dj                  ||	      }| j                  |       | j                  t	        j                  t        j                  j                  t        j                   d
      t        j"                               t	        j$                  | t        j&                        | _        t+        | j                  d   j,                  j/                               dk(  r0t1        | j                   t        d      | j                  d   z         t	        j2                  t        d      | j                         }t	        j4                          | j7                  d       t9        | j(                  t        j:                        | _        | j?                  | d       | j<                  jA                  | jB                  d   t        d      d       | j?                  | d       | j<                  jA                  | jB                  d   t        d      d       | j?                  | d       | j<                  jA                  | jB                  d   t        d      d       ~|r+t	        jD                  | j<                  jF                  |       n*t	        jD                  | j<                  jH                  d       tK        | j(                        | _&        | jL                  jO                  t        d             tQ        | j(                  t        jR                        | _*        | jT                  jO                  t        d              tW        | j(                        | _,        | jX                  jO                  t        d!             | j[                  t        j\                  | j^                  t        j`                  "       t        jb                  t        jd                  t        j`                  fg}t	        jf                  |      }| ji                  |       | jL                  j[                  t        jj                  | j^                         | jT                  j[                  t        jj                  | jl                         | jX                  j[                  t        jj                  | jn                         | j<                  j[                  tp        jr                  | jt                         | j[                  t        jv                  | j^                         | jy                          | j{                  d#       | j}                  | j                                y#  d}
Y xY w)$a  GRASS Attribute Table Manager window

        :param parent: parent window
        :param id: window id
        :param title: full window title or None for default title
        :param base_title: the document independent part of title or None for default
        :param vectorName: name of vector map
        :param item: item from Layer Tree
        :param log: log window
        :param selection: name of page to be selected
        :param kwagrs: other wx.Frame's arguments
        N)id
mapdisplay
vectorNameitemlog	statusbarzAttribute Table ManagervectNameeditablez{document} (read-only))documentz{document} - {tool_name})r   	tool_namezgrass_sql.ico)parentr   	mapDBInfor   zxDatabase connection for vector map <%s> is not defined in DB file. You can define new connection in 'Manage layers' tab.)r   messagez&Please wait, loading attribute data...)r      )number)stylebrowse)r   pageNamezBrowse data)pagetextnamemanageTablezManage tablestablemanageLayerzManage layerslayerszClose Attribute Table Managerz(Reload currently selected attribute dataz2Reload all attribute data (drop current selection))r   )i  i&  )@r   GetMapDisplayr   __init__wxFrame_	dbMgrDataformatSetTitleSetIconIconospathjoinr   ICONDIRBITMAP_TYPE_ICOPanelID_ANYpanellenr%   keysr   BusyInfo	SafeYieldCreateStatusBarr   FNPageDStylenotebookCreateDbMgrPageAddPagepages	CallAfterSetSelectionByNameSetSelectionr	   btnClose
SetToolTipr   
ID_REFRESH	btnReloadr   btnResetBindEVT_MENUOnCloseWindow	ID_CANCELACCEL_NORMAL
WXK_ESCAPEAcceleratorTableSetAcceleratorTable
EVT_BUTTONOnReloadDataOnReloadDataAllFNEVT_FLATNOTEBOOK_PAGE_CHANGEDOnPageChanged	EVT_CLOSE_layoutSetSize
SetMinSizeGetSize)selfr   r   title
base_titler   r   r   	selectionkwargsr   r   busyaccelTableList
accelTables                  ./usr/lib/grass83/gui/wxpython/dbmgr/manager.pyr'   zAttributeManager.__init__-   s}   0 	224J 			
!!		
 		
 	$4V4 89
~~j1H>>*-56==x=P.55!Z 6 E 	e 	GGY..@"BTBT	
 XXTbii8
t~~k*116689Q>{{+ ..,-	 {{67
 	A&!$**I4J4JKD8<H%Am,<8 	 	
 	D=AM*?1C' 	 	
 	D=AM*?1C( 	 	
 LL999ELL33Q7 $4::6  #B!CDtzzbmmD!!!$N"OP#4::6  BC	

 			"++t11bll	C??BMM2<<HI((8
  , 	2==$*<*<=BMM4+<+<=2==$*>*>?2;;T=O=OP		",, 2 23 	 	Z 'Y	Js   W8 8W?c                    t        j                  t         j                        }t        j                  t         j                        }|j	                  | j
                  dt         j                  d       |j	                  | j                  dt         j                  d       |j	                  | j                  dt         j                  d       |j	                  | j                  dt         j                         |j	                  |t         j                  t         j                  z  d       | j                  j                  d       | j                  j                  |       |j                  | j                         | j!                          y)z	Do layoutr      )
proportionflagborder)rh   ri   )ri   rj   TN)r(   BoxSizerVERTICAL
HORIZONTALAddrI   ALLrH   rE   r>   EXPANDALIGN_RIGHTr7   SetAutoLayoutSetSizerFitLayout)r]   	mainSizerbtnSizers      re   rY   zAttributeManager._layout   s     KK,	 ;;r}}-T]]qrvvaHT^^qIT]]qrvvaHdmm		BhR^^bff%<QG

  &

I&djj!    c                    | j                   rE| j                   j                         dk(  r(| j                   j                  d   j                  |        t	        |t
        j                        s| j                          |j                          y)zCancel button pressedLayerManageratmN)	r   GetNamedialogsremove
isinstancer(   
CloseEventDestroySkipr]   events     re   rL   zAttributeManager.OnCloseWindow   sZ    ;;4;;..0NBKK&--d3%/LLN

rx   c                 `    | j                   d   r| j                   d   j                  |       yy)zReload datar   N)rA   OnDataReloadr   s     re   rS   zAttributeManager.OnReloadData   s*    ::hJJx --e4  rx   c                 ^    | j                   d   r| j                   d   j                          yy)zReload all datar   N)rA   	ResetPager   s     re   rT   z AttributeManager.OnReloadDataAll   s(    ::hJJx **,  rx   c                    	 | j                   d   r9| j                   d   j                  }| j                   d   j                  |   d   }nd}|j	                         | j
                  j                  d      k(  r|r| j                  |      }|r6| j                  j                  t        d      |j                         z         n| j                  j                  d       | j                  j                          | j                  j                          nQ| j                  j                  d       | j                  j                  d       | j                  j                  d       |j                          y# t        $ r d}Y 7w xY w)zOn page in ATM is changedr   dataNzNumber of loaded records: %d F)rA   selLayer	layerPageKeyErrorGetSelectionr>   GetPageIndexByNameFindWindowByIdr   writer*   GetItemCountrH   EnablerI   r   )r]   r   selPager   wins        re   rW   zAttributeManager.OnPageChanged   s)   	zz(#**X.77ZZ)33G<VD 4==#C#CH#MMRT%%b)Cq!?@3CSCSCUUVr"NN!!#MM  "HHNN2NN!!%(MM  '

!  	B	s   A
E5 5FFc                      y )N r   s     re   OnTextEnterzAttributeManager.OnTextEnter   s    rx   c                 h    t        j                  | |       | j                  j                  d       y)z%Updates dialog layout for given layer)layerr%   N)r   UpdateDialogr>   rC   )r]   r   s     re   r   zAttributeManager.UpdateDialog   s$    t51((2rx   )__name__
__module____qualname__r(   r6   r'   rY   rL   rS   rT   rW   r   r   r   rx   re   r   r   ,   sG     99G(R&	5
-
43rx   r   )__doc__r0   r(   corer   wxPythonPhoenixagw.flatnotebookflatnotebookrU   ImportErrorwx.lib.agw.flatnotebooklibagwwx.lib.flatnotebook	core.gcmdr   
dbmgr.baser   gui_core.widgetsr   gui_core.wrapr   r   r	   r)   r   r   rx   re   <module>r      sh   0 
 	 -% %$    & : :S3rxx S3  -,,-s   A! !A54A5