
    Je                         d Z ddlmZ ddlmZ ddl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 dd	lmZ dd
lmZ  G d d      Z G d de      Zy)z
Status bar plugin.
    )Slot)SpyderAPIError)PluginsSpyderPluginV2)on_plugin_availableon_plugin_teardown_)StatusBarWidget)running_under_pytest)StatusBarConfigPage)StatusBarContainerc                       e Zd ZdZdZy)StatusBarWidgetPositionr   N)__name__
__module____qualname__LeftRight     A/usr/lib/python3/dist-packages/spyder/plugins/statusbar/plugin.pyr   r      s    DEr   r   c                      e Zd ZdZdZej                  gZeZ	eZ
dZeZi Zi Zi Zi Zh dZed        Zd Zd Zd Zd	 Z eej                  
      d        Z eej                  
      d        Zd Zej>                  fdZ d Z!d Z"d Z#d Z$ e%e&      d        Z'e(d        Z)e(d        Z*e(d        Z+e(d        Z,d Z-d Z.y)	StatusBarzStatus bar plugin.	statusbarF>   
cpu_status
eol_status
lsp_status
vcs_statuskite_statusclock_statusmemory_statusencoding_statuscompletion_statusread_write_statusinterpreter_statuscursor_position_statusapplication_update_statusc                      t        d      S )Nz
Status barr	   r   r   r   get_namezStatusBar.get_name4   s    r   c                 $    | j                  d      S )Nr   )create_iconselfs    r   get_iconzStatusBar.get_icon8   s    ,,r   c                     t        d      S )Nz&Provide Core user interface managementr	   r.   s    r   get_descriptionzStatusBar.get_description;   s    9::r   c                     | j                  | j                  t        j                         | j                  | j                  t        j                         | j                  | j
                  t        j                         y N)add_status_widget
mem_statusr   r   r   r"   r.   s    r   on_initializezStatusBar.on_initialize>   sX    t0G0M0MNt0G0M0MN6<<	>r   c                 :    | j                   j                  d       y )NF
_statusbar
setVisible)r/   _unuseds     r   on_closezStatusBar.on_closeE   s    ""5)r   )pluginc                 d    | j                  t        j                        }|j                  |        y r4   )
get_pluginr   Preferencesregister_plugin_preferencesr/   preferencess     r   on_preferences_availablez"StatusBar.on_preferences_availableH   s$    oog&9&9://5r   c                 d    | j                  t        j                        }|j                  |        y r4   )r@   r   rA   deregister_plugin_preferencesrC   s     r   on_preferences_teardownz!StatusBar.on_preferences_teardownM   s$    oog&9&9:11$7r   c                 n    | j                         }|j                  j                  | j                         y r4   )get_containersig_show_status_bar_requestedconnectshow_status_bar)r/   	containers     r   after_container_creationz"StatusBar.after_container_creationR   s-    &&(	//77  	
r   c                 $   t        |t              st        d      |j                  }|t        dt	        |       d      || j
                  v rt               st        d| d      || j                  v r|| j                  |<   n2|t        j                  k(  r|| j                  |<   n|| j                  |<   || j
                  |<   | j                  j                  d       |t        j                  k(  r| j                  j                  |       n*| j                  j!                  t        j"                  |       | j                  j%                         j'                  dddd       | j                  j%                         j)                  d       y)aI  
        Add status widget to main application status bar.

        Parameters
        ----------
        widget: StatusBarWidget
            Widget to be added to the status bar.
        position: int
            Position where the widget will be added given the members of the
            StatusBarWidgetPosition enum.
        z0Any status widget must subclass StatusBarWidget!NzStatus widget `z` doesn't have an identifier!z` already added!z QStatusBar::item {border: None;}r   )
isinstancer   r   IDreprSTATUS_WIDGETSr   INTERNAL_WIDGETS_IDSINTERNAL_WIDGETSr   r   EXTERNAL_RIGHT_WIDGETSEXTERNAL_LEFT_WIDGETSr:   setStyleSheetaddPermanentWidgetinsertPermanentWidgetr   layoutsetContentsMargins
setSpacing)r/   widgetpositionid_s       r   r5   zStatusBar.add_status_widgetY   sa    &/2 B 
 ii; !$v,/LM 
 $%%%.B.D ?3%7G!HII$+++)/D!!#&0666/5D'',.4D&&s+#)C %%&HI.444OO..v6OO11',,f6 33Aq!Q? ++A.r   c                     	 | j                  |      }| j                  j                  |       | j                  j	                  |       y# t
        $ r Y yw xY w)z
        Remove widget from status bar.

        Parameters
        ----------
        id_: str
            String identifier for the widget.
        N)get_status_widgetrT   popr:   removeWidgetRuntimeError)r/   ra   r_   s      r   remove_status_widgetzStatusBar.remove_status_widget   sQ    	++C0F##C(OO((0 	 	s   AA
 
	AAc                 Z    || j                   v r| j                   |   S t        d| d      )z
        Return an application status widget by name.

        Parameters
        ----------
        id_: str
            String identifier for the widget.
        zStatus widget "z" not found!)rT   r   )r/   ra   s     r   rc   zStatusBar.get_status_widget   s7     $%%%&&s++ ?3%|!DEEr   c                 H    t        | j                  j                               S )zReturn all status widgets.)listrT   keysr.   s    r   get_status_widgetszStatusBar.get_status_widgets   s    D'',,.//r   c                 P    | j                         D ]  }| j                  |        y)zRemove all status widgets.N)rl   rg   )r/   ws     r   remove_status_widgetszStatusBar.remove_status_widgets   s(    ((* 	)A%%a(	)r   c                 :    | j                   j                  |       y)z
        Show/hide status bar.

        Parameters
        ----------
        value: bool
            Decide whether to show or hide the status bar.
        Nr9   )r/   values     r   rM   zStatusBar.show_status_bar   s     	""5)r   c                 6    | j                         j                  S r4   )rJ   r6   r.   s    r   r6   zStatusBar.mem_status       !!#...r   c                 6    | j                         j                  S r4   )rJ   r   r.   s    r   r   zStatusBar.cpu_status   rs   r   c                 6    | j                         j                  S r4   )rJ   r"   r.   s    r   r"   zStatusBar.clock_status   s    !!#000r   c                 6    | j                   j                         S )z$Reference to main window status bar.)_main	statusBarr.   s    r   r:   zStatusBar._statusbar   s     zz##%%r   c                    g d}t        | j                  j                               }| j                  D ]*  }| j                  j                  | j                  |          , | j                  D ]*  }| j                  j                  | j                  |          , |D ]f  }|| j                  v s| j                  j                  t        j                  | j                  |          | j                  |   j                  d       h |D ]W  }| j                  j                  t        j                  | j                  |          | j                  |   j                  d       Y y)zQ
        Organize the status bar widgets once the application is loaded.
        )r"   r   r#   r&   r   r$   r(   r    r   r!   r%   r'   r)   TN)
rj   rX   rk   rV   r:   re   r[   r   r   r;   )r/   internal_layoutexternal_leftra   s       r   _organize_status_widgetsz"StatusBar._organize_status_widgets   sD   
?
 T77<<>? (( 	ECOO(()>)>s)CD	E -- 	JCOO(()C)CC)HI	J # 	<Cd+++55+00$2G2G2LN%%c*55d;	< ! 	=COO11',,d.H.H.MO&&s+66t<	=r   c                 Z    | j                   j                  d       | j                          y)z0Perform actions before the mainwindow is visibleFN)r:   r;   r|   r.   s    r   before_mainwindow_visiblez#StatusBar.before_mainwindow_visible   s"     	""5)%%'r   N)/r   r   r   __doc__NAMEr   rA   REQUIRESr   CONTAINER_CLASSCONF_SECTION	CONF_FILEr   CONF_WIDGET_CLASSrT   rW   rX   rV   rU   staticmethodr+   r0   r2   r7   r=   r   rE   r   rH   rO   r   r   r5   rg   rc   rl   ro   r   boolrM   propertyr6   r   r"   r:   r|   r~   r   r   r   r   r      sQ   D##$H(OLI+N;  -;>*  3 346 56 w2238 48
 2I1M1M -/^$F0)
 
$Z	* 	* / / / / 1 1 & &=B(r   r   N)r   qtpy.QtCorer   spyder.api.exceptionsr   spyder.api.pluginsr   r   )spyder.api.plugin_registration.decoratorsr   r   spyder.api.translationsr
   spyder.api.widgets.statusr   spyder.config.baser   !spyder.plugins.statusbar.confpager   "spyder.plugins.statusbar.containerr   r   r   r   r   r   <module>r      sC   
  1 6- % 5 3 A A 
V( V(r   