
    Je                         d Z ddlmZmZmZ ddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZ  G d dee      Z G d	 d
e      Zy)z
Spyder API auxiliary widgets.
    )QEventQSizeSignal)QMainWindowQSizePolicyQToolBarQWidget)SpyderAPIError)SpyderMainWindowMixin)APP_STYLESHEETc                   X     e Zd ZdZ e       Z	  ee      Z	  fdZ fdZ	 fdZ
 xZS )SpyderWindowWidgetz9MainWindow subclass that contains a SpyderDockablePlugin.c                 z    t         |           || _        d| _        | j	                  t        t                     y )NT)super__init__widgetis_window_widgetsetStyleSheetstrr   )selfr   	__class__s     F/usr/lib/python3/dist-packages/spyder/api/widgets/auxiliary_widgets.pyr   zSpyderWindowWidget.__init__(   s4     !% 	3~./    c                 X    t         |   |       | j                  j                          y)z7Override Qt method to emit a custom `sig_close` signal.N)r   
closeEvent
sig_closedemitr   eventr   s     r   r   zSpyderWindowWidget.closeEvent2   s     5!r   c                     |j                         t        j                  k(  r)| j                  j	                  | j                                t        |   |       y)z
        Override Qt method to emit a custom `sig_windowstate_changed` signal
        when there's a change in the window state.
        N)typer   WindowStateChangesig_window_state_changedr   windowStater   changeEventr   s     r   r%   zSpyderWindowWidget.changeEvent7   sC    
 ::<6333))..t/?/?/ABE"r   )__name__
__module____qualname____doc__r   r   objectr#   r   r   r%   __classcell__r   s   @r   r   r      s5    C J?%f~0
# #r   r   c                   .     e Zd ZdZ fdZd Zd Z xZS )MainCornerWidgetzM
    Corner widget to hold options menu, spinner and additional options.
    c                    t         |   |       t        dd      | _        | j	                  | j                         i | _        g | _        | j                  |       t               | _	        | j                  j                  d       | j                  j                  t        j                  t        j                         | j                  | j                         y )N   r   )r   r   r   
_icon_sizesetIconSize_widgets_actionssetObjectNamer	   _strutsetFixedWidthsetSizePolicyr   	Expanding	addWidget)r   parentnamer   s      r   r   zMainCornerWidget.__init__F   s     B-)4 
 i!!!$!!+"7"79N9NOt{{#r   c           	         || j                   v r<t        dj                  |t        | j                   j	                                           ||_        || j                   |<   | j                  j                  | j                  |             y)zR
        Add a widget to the left of the last widget added to the corner.
        z:Wigdet with name "{}" already added. Current names are: {}N)	r3   r
   formatlistkeysIDr4   appendr:   )r   	widget_idr   s      r   
add_widgetzMainCornerWidget.add_widgetW   sr     % 6)T$--*<*<*>%?@ 
 	#)i T^^F34r   c                 >    || j                   v r| j                   |   S y)zReturn a widget by unique id.N)r3   )r   rC   s     r   
get_widgetzMainCornerWidget.get_widgete   s"    %==++ &r   )r&   r'   r(   r)   r   rD   rF   r+   r,   s   @r   r.   r.   A   s    $"5,r   r.   N)r)   qtpy.QtCorer   r   r   qtpy.QtWidgetsr   r   r   r	   spyder.api.exceptionsr
   spyder.api.widgets.mixinsr   spyder.utils.stylesheetr   r   r.    r   r   <module>rM      s?   
 . - F F 1 ; 2)#&; )#X',x ',r   