
    Je~
                     B    d Z ddlmZ ddlmZ ddlmZ  G d de      Zy)zSpyder completion container.    )QMessageBox)PluginMainContainer)CompletionStatusc                   f     e Zd ZdZ fdZddZd Zd Zd Zd Z	d Z
d	 Zd
edededefdZ xZS )CompletionContainerz0Stateless class used to store graphical widgets.c                 @    t        |   |i | i | _        i | _        y N)super__init__statusbar_widgetsprovider_statusbars)selfargskwargs	__class__s      E/usr/lib/python3/dist-packages/spyder/plugins/completion/container.pyr   zCompletionContainer.__init__   s%    $)&)!##%     c                 &    t        |       | _        y )N)parent)r   completion_status)r   optionss     r   setupzCompletionContainer.setup   s    !1!>r   c                      y r	    )r   s    r   update_actionsz"CompletionContainer.update_actions   s    r   c                      ||       }t        |t              rBt        |d      r%|j                  j	                  | j
                         |j                          y y )Nsig_restart_spyder)
isinstancer   hasattrr   connectsig_restart_requestedexec_)r   Widgetwidgets      r   show_widgetzCompletionContainer.show_widget!   sH    fk*v34))11$2L2LMLLN +r   c                     g }|D ]>  } ||       }|| j                   |j                  <   |j                  |j                         @ || j                  |<   |S r	   )r   IDappendr   )r   statusbar_classesprovider_namecurrent_ids	StatusBar	statusbars         r   register_statusbar_widgetsz.CompletionContainer.register_statusbar_widgets)   s]    * 	-I!$I3<D""9<<0y||,	- 3>  /r   c                 Z    | j                   D cg c]  }| j                   |    c}S c c}w r	   )r   )r   ks     r   all_statusbar_widgetsz)CompletionContainer.all_statusbar_widgets2   s'    373I3IJa&&q)JJJs   (c                 <    | j                   j                  |d       y)z&Remove statusbar widget given its key.N)r   pop)r   
status_keys     r   remove_statusbar_widgetz+CompletionContainer.remove_statusbar_widget5   s    "":t4r   c                 :    | j                   j                  |g       S )z6Get the list of statusbar keys for the given provider.)r   get)r   r*   s     r   get_provider_statusbar_keysz/CompletionContainer.get_provider_statusbar_keys9   s    ''++M2>>r   r4   methodr   r   c                 h    || j                   v r$| j                   |   }t        ||      } ||i | yy)a  
        Perform a remote call on the status bar with ID `status_key`.

        Parameters
        ----------
        status_key: str
            Identifier of the status call that should recieve the method call.
        method: str
            Name of the method.
        args: tuple
            Positional arguments of the method call.
        kwargs: dict
            Optional arguments of the method call.
        N)r   getattr)r   r4   r9   r   r   r-   calls          r   statusbar_rpcz!CompletionContainer.statusbar_rpc=   s@      ///..z:I9f-D$!&! 0r   r	   )__name__
__module____qualname____doc__r   r   r   r%   r.   r1   r5   r8   strtupledictr=   __classcell__)r   s   @r   r   r      sQ    :&
?K5?" "S " """r   r   N)rA   qtpy.QtWidgetsr   !spyder.api.widgets.main_containerr   (spyder.plugins.completion.widgets.statusr   r   r   r   r   <module>rI      s%    #
 ' B E="- ="r   