
    G@d~
                     J    d Z ddlmZ ddlmZ ddlmZ  G d de          ZdS )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                 V     t                      j        |i | i | _        i | _        d S N)super__init__statusbar_widgetsprovider_statusbars)selfargskwargs	__class__s      Clib/python3.11/site-packages/spyder/plugins/completion/container.pyr   zCompletionContainer.__init__   s5    $)&)))!##%       Nc                 0    t          |           | _        d S )N)parent)r   completion_status)r   optionss     r   setupzCompletionContainer.setup   s    !1!>!>!>r   c                     d S r	    r   s    r   update_actionsz"CompletionContainer.update_actions   s    r   c                      ||           }t          |t                    rEt          |d          r|j                            | j                   |                                 d S d S )Nsig_restart_spyder)
isinstancer   hasattrr   connectsig_restart_requestedexec_)r   Widgetwidgets      r   show_widgetzCompletionContainer.show_widget!   sj    fk** 	v344 N)11$2LMMMLLNNNNN	 	r   c                     g }|D ]6} ||           }|| j         |j        <   |                    |j                   7|| 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|,,,,2= /r   c                 *      fd j         D             S )Nc                 *    g | ]}j         |         S r   r   ).0kr   s     r   
<listcomp>z=CompletionContainer.all_statusbar_widgets.<locals>.<listcomp>3   s!    JJJa&q)JJJr   r2   r   s   `r   all_statusbar_widgetsz)CompletionContainer.all_statusbar_widgets2   s     JJJJ43IJJJJr   c                 <    | j                             |d           dS )z&Remove statusbar widget given its key.N)r   pop)r   
status_keys     r   remove_statusbar_widgetz+CompletionContainer.remove_statusbar_widget5   s!    "":t44444r   c                 8    | 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   r9   methodr   r   c                 f    || j         v r'| j         |         }t          ||          } ||i | dS dS )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   r9   r>   r   r   r.   calls          r   statusbar_rpcz!CompletionContainer.statusbar_rpc=   sQ      ///.z:I9f--DD$!&!!!!! 0/r   r	   )__name__
__module____qualname____doc__r   r   r   r&   r/   r6   r:   r=   strtupledictrB   __classcell__)r   s   @r   r   r      s        ::& & & & &
? ? ? ?      K K K5 5 5? ? ?" "S " """ " " " " " " "r   r   N)rF   qtpy.QtWidgetsr   !spyder.api.widgets.main_containerr   (spyder.plugins.completion.widgets.statusr   r   r   r   r   <module>rN      s}    # "
 ' & & & & & B A A A A A E E E E E E=" =" =" =" ="- =" =" =" =" ="r   