
    ը	f                     \    d Z ddlZddlmZ ddlmZ ddlmZ  G d d      Z	 G d d      Z
y)	a  
@package frame.statusbar

@brief Classes for main window statusbar management

Classes:
 - statusbar::SbMain
 - statusbar::SbMask

(C) 2022 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 Linda Kladivova <lindakladivova gmail.com>
@author Anna Petrasova <kratochanna gmail.com>
@author Vaclav Petras <wenzeslaus gmail.com>
    N)
RunCommand)Buttonc                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	SbMainzStatusbar for main window.c                     || _         || _        t        j                  | j                   t        j                        | _        | j
                  j                  d       | j
                  j                  d       | j
                  j                  ddg       t        | j
                  | j                        | _
        | j
                  j                  t        j                  | j                         | j                          y )N)id      d   )parentgifacewx	StatusBarID_ANYwidgetSetMinHeightSetFieldsCountSetStatusWidthsSbMaskmaskBindEVT_SIZEOnSize_repositionStatusbarselfr   r   s      //usr/lib/grass83/gui/wxpython/lmgr/statusbar.py__init__zSbMain.__init__   s    ll4;;299=  $""1%##RI.4;;4	dkk2!!#    c                     | j                   S zUReturns underlying widget.

        :return: widget or None if doesn't exist
        r   r   s    r   	GetWidgetzSbMain.GetWidget*       
 {{r    c                     | j                         j                  d      }|xj                  dz  c_        |xj                  dz  c_        | j                  j                         j                  |       y)z+Reposition widgets in main window statusbar   N)r%   GetFieldRectxyr   SetRect)r   rect1s     r   r   zSbMain._repositionStatusbar1   sN     --a011		%%e,r    c                 8    | j                   j                          y)z3Refresh statusbar. So far it refreshes just a mask.N)r   Refreshr$   s    r   r/   zSbMain.Refresh8   s    		r    c                 $    | j                          y)z-Adjust main window statusbar on changing sizeN)r   )r   events     r   r   zSbMain.OnSize<   s    !!#r    c                 >     | j                         j                  |  y)zOverride wx.StatusBar methodN)r%   SetStatusText)r   argss     r   r3   zSbMain.SetStatusText@   s    &&&-r    N)
__name__
__module____qualname____doc__r   r%   r   r/   r   r3    r    r   r   r      s#    $	$-$.r    r   c                   H    e Zd ZdZd ZddZd Zd Zd Zd Z	d	 Z
d
 Zd Zy)r   zWButton to show whether mask is activated and remove mask with
    left mouse click
    c                    d| _         d| _        || _        || _        t	        |t
        j                  t        | j                        t
        j                        | _	        | j                  j                  t
        j                  | j                         | j                  j                  t        j                  ddd             | j                  j                  t        d             | j                  j                   j#                  | j$                         | j                  j&                  j#                  | j(                         | j%                          y )Nr   MASK)r   r   labelstyle   r   z#Left mouse click to remove the MASK)tip)name
mask_layerr   r   r   r   r   _	NO_BORDERr   r   
EVT_BUTTONOnRemoveMaskSetForegroundColourColour
SetToolTipcurrentMapsetChangedconnectr/   grassdbChanged
_dbChangedr   s      r   r   zSbMask.__init__J   s    	 biiq/A
 	(9(9:''		#q!(<=1%J#KL((00>""**4??;r    Nc                     || j                   k(  s|| j                   k(  r5| j                          | j                  j                  j	                          y y N)rB   r/   r   	updateMapemit)r   mapnewnames      r   rM   zSbMask._dbChangedY   s>    $//!W%?LLNKK!!&&( &@r    c                 8    | j                   j                          y)zInvokes showing of underlying widget.

        In derived classes it can do what is appropriate for it,
        e.g. showing text on statusbar (only).
        N)r   Showr$   s    r   rU   zSbMask.Show^   s     	r    c                 8    | j                   j                          y rO   )r   Hider$   s    r   rW   zSbMask.Hidef   s    r    c                 :    | j                   j                  |       y rO   )r   SetValue)r   values     r   rY   zSbMask.SetValuei   s    U#r    c                 6    | j                   j                         S rO   )r   GetValuer$   s    r   r\   zSbMask.GetValuel   s    {{##%%r    c                     | j                   S r"   r#   r$   s    r   r%   zSbMask.GetWidgeto   r&   r    c                     t        j                  | j                  dt        j                         d         d   r| j	                          y| j                          y)z-Show mask in the statusbar if mask file foundcellMAPSET)rA   elementmapsetrA   N)gs	find_filerB   gisenvrU   rW   r$   s    r   r/   zSbMask.Refreshv   s@    <<&X9N

 IIKIIKr    c                    t        j                  | j                  t        d      t        d      t         j                  t         j
                  z  t         j                  z        }|j                         t         j                  k7  r|j                          y t        dd       t        j                         }| j                  j                  j                  |d   |d   |d	   | j                   d
d       y )Nz.Are you sure that you want to remove the MASK?zRemove MASK)messagecaptionr>   zr.maskr)flagsGISDBASELOCATION_NAMEr`   deleteraster)grassdblocationrb   rR   actionra   )r   MessageDialogr   rC   YES_NOYES_DEFAULTICON_QUESTION	ShowModalID_YESDestroyr   rc   re   r   rL   rQ   rB   )r   r1   dlgre   s       r   rF   zSbMask.OnRemoveMask   s    KKFGm$))bnn,r/?/??	
 ==?bii'KKM83'""'':&O,(# 	( 	
r    )NN)r5   r6   r7   r8   r   rM   rU   rW   rY   r\   r%   r/   rF   r9   r    r   r   r   E   s4    )
$&
r    r   )r8   r   grass.scriptscriptrc   	core.gcmdr   gui_core.wrapr   r   r   r9   r    r   <module>r~      s/   & 
     &. &.RM
 M
r    