
    ceQ$                     2   d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZ  G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          Z G d de
          Z G d de
          ZdS )z%Custom tab widget with custom tabbar.    N)QtSignal)QHBoxLayoutQSizePolicyQStackedWidgetQVBoxLayoutQWidget)attribution)
ButtonLinkButtonToolBase	FrameBaseFrameTabBarFrameTabBody	LabelBase	StackBodyc                       e Zd ZdZdS )LabelTabHeaderzLabel used in CSS styling.N__name__
__module____qualname____doc__     Ilib/python3.11/site-packages/anaconda_navigator/widgets/tabs/tabwidget.pyr   r              $$$$r   r   c                       e Zd ZdZdS )FrameTabBarBottomFrame used in CSS styling.Nr   r   r   r   r   r      r   r   r   c                       e Zd ZdZdS )FrameTabBarLinkr   Nr   r   r   r   r!   r!   !   r   r   r!   c                       e Zd ZdZdS )FrameTabBarSocialr   Nr   r   r   r   r#   r#   %   r   r   r#   c                   ,     e Zd ZdZ fdZ fdZ xZS )	ButtonTab.Button used in custom tab bar for CSS styling.c                      t                      j        |i | |                     d           |                     t          j                   |                     t          j        t          j                   dS )r&   TN)	super__init__setCheckablesetToolButtonStyler   ToolButtonTextBesideIconsetSizePolicyr   	Expanding)selfargskwargs	__class__s      r   r)   zButtonTab.__init__,   sl    $)&)))$ ;<<<;0+2GHHHHHr   c                     |                                 }|t          j        t          j        fv r|                                  t                                          |           dS )Override Qt method.N)keyr   	Key_Enter
Key_ReturnanimateClickr(   keyPressEvent)r/   eventr5   r2   s      r   r9   zButtonTab.keyPressEvent3   sT    iikk2<///e$$$$$r   )r   r   r   r   r)   r9   __classcell__r2   s   @r   r%   r%   )   s\        88I I I I I% % % % % % % % %r   r%   c            	            e Zd ZdZ ee          Z ee          Z fdZ	d Z
ddZddedej        e         dej        e         d	dfd
Zd ZddZddZ xZS )TabBarzECustom QTabBar that includes centered icons and text bellow the icon.c                     t                      j        |i | g | _        g | _        g | _        t                      | _        t                      | _        t                      | _
        d| _        t                      | _        t                      | _        t                      | _        t!                      | _        t%                      | _        t)          d          | _        t                      }|                    | j                   |                                 | j                            | j                   | j
                            | j                   | j                            | j                   t                      }|                    | j
                   |                    | j                   | j                            |           |                    | j                   |                     |           dS )zCustom QTabBar.N )r(   r)   buttonslinkslinks_socialr   frame_bottomr#   frame_socialr!   
frame_linkcurrent_indexr   
layout_toplayout_linklayout_advertisementr   banners_stackr   layout_socialr   _label_links_header	addLayout
addStretch	setLayout	addWidget)r/   r0   r1   layoutlayout_bottomr2   s        r   r)   zTabBar.__init__A   s   $)&)))
-//-//)++! &--&==$/MM!+--(]]#1"#5#5 )))""4#<===!!$"2333##D$6777#000 1222##M222*+++ 	vr   c                 :    | j                             |           dS z5Add links header to the bottom of the custom tab bar.N)rM   setTextr/   texts     r   set_links_headerzTabBar.set_links_headerf   s     ((.....r   Nc                     t                      }|                    d           |                    |                                           |                    t
          j                   |j                            d|f fd	            j	        
                    |dt
          j                    j                            |           dS )&Add social link on bottom of side bar. Nc                 8    j                             |          S N)sig_url_clickedemit)vurlr/   s     r   <lambda>z#TabBar.add_social.<locals>.<lambda>p   s    t7K7P7PQT7U7U r   r   )r   rV   setObjectNamelowersetFocusPolicyr   StrongFocusclickedconnectrL   rQ   AlignCenterrC   append)r/   rX   rb   buttons   `   r   
add_socialzTabBar.add_socialj   s    sTZZ\\***bn---#UUUUUVVV$$VQ???  (((((r   rX   rb   
utm_mediumreturnc                     t                      }|                    |           |                    t          j        t          j                   |                    t          j                   ddt          ddf fd}|j	        
                    |            j                            |            j                            |           dS )zAdd link on bottom of side bar.F_checkedro   Nc                     d S }&t           j        j                            |          }j                            |           d S )N)rn   )r
   POOLsettingsinject_url_parametersr_   r`   )rq   new_urlr/   rb   rn   s     r   on_clickz!TabBar.add_link.<locals>.on_click{   sT    {G%%*3II'^hIii %%g.....r   )F)r   rV   r-   r   r.   rf   r   rg   boolrh   ri   rI   rQ   rB   rk   )r/   rX   rb   rn   rl   rw   s   ` ``  r   add_linkzTabBar.add_linkt   s    t[2K4IJJJbn---	/ 	/t 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	x(((""6***
&!!!!!r   c                 l   t          t          | j                                                            D ]4}| j                            | j                            |                     5t          j        t          j        j	                 }|(| j        
                    |t          j                   dS dS )z Put advertisement in the layout.N)	alignment)reversedrangerJ   count
removeItemitemAtr
   rs   PartnerWidgetPlacementBOTTOM_LEFT_CORNERrQ   r   rj   )r/   itemwidgets      r   add_advertisementzTabBar.add_advertisement   s    U4#<#B#B#D#DEEFF 	Y 	YD%001J1Q1QRV1W1WXXXX+6+;K<^<q+r%//"./QQQQQ r   c                     t                                          |                                                               |                               t
          j                   |r                    |            j        	                                j
                                        j
                                      j                            f fd	           dS )z7Create the widget that replaces the normal tab content.c                 0                                   S r^   )refresh)birl   indexr/   s     r   rc   z TabBar.add_tab.<locals>.<lambda>   s    fe9T9T r   N)r%   rd   re   rV   rf   r   rg   setIconrH   rQ   rA   rk   r   rh   ri   )r/   rX   iconrl   r   s   `  @@r   add_tabzTabBar.add_tab   s    TZZ\\***tbn--- 	!NN4   !!&)))F###""6**%TTTTTTTUUUUUr   c                    g }| j         D ]T}|                    d           |                    dd           |                    |                                           Ut          |          }| j         D ]}|                    |           |r+|                    d           |                    dd           |#| j                            |           || _	        dS dS )z"Refresh pressed status of buttons.FcheckedTN)
rA   
setCheckedsetPropertyrk   widthmaxsetMinimumWidthsig_index_changedr`   rG   )r/   rl   r   widthsr   	max_widths         r   r   zTabBar.refresh   s     	% 	%ALLMM)U+++MM!''))$$$$KK	 	) 	)Ai(((( 	0d###y$///"''...!&D r   r^   NN)r   r   r   r   r   intr   objectr_   r)   rY   rm   strtypingOptionalry   r   r   r   r;   r<   s   @r   r>   r>   ;   s       OOsfVnnO# # # # #J/ / /) ) ) )" "S "vs'; "PVP_`cPd "pt " " " "*R R RV V V V' ' ' ' ' ' ' 'r   r>   c            	            e Zd ZdZ ee          Z ee          Z fdZ	d Z
d Zd Zd Zd Zd ZddZddedej        e         dej        e         dd	fdZd ZddZd Zd Z xZS )	TabWidgetz>Curstom Tab Widget that includes a more customizable `tabbar`.c                     t                      j        |i | t                      | _        t	                      | _        t                      | _        t                      | _	        t                      }|                    | j	                   | j                            |           t                      }|                    | j                   | j                            |           t                      }|                    | j                   |                    | j                   |                     |           | j	        j                            | j                   | j	        j                            | j                   dS )z=Custom Tab Widget that includes a more customizable `tabbar`.N)r(   r)   r   frame_sidebarr   frame_tab_contentr   stackr>   tabbarr   rQ   rP   r   r   ri   setCurrentIndexr_   )r/   r0   r1   layout_sidebarlayout_contentrR   r2   s         r   r)   zTabWidget.__init__   s@   $)&)))(]]!-[[
hh$  ---$$^444$  ,,,((888+,,,/000v%--d.BCCC#++D,@AAAAAr   c                 4    | j                                         S r4   )r   r~   r/   s    r   r~   zTabWidget.count   s    z!!!r   c                 6    | j                             |          S r   )r   r   r/   r   s     r   r   zTabWidget.widget   s    z  '''r   c                 4    | j                                         S r   )r   currentWidgetr   s    r   r   zTabWidget.currentWidget   s    z'')))r   c                     | j         j        S r   )r   rG   r   s    r   currentIndexzTabWidget.currentIndex   s    {((r   c                 L   |                                  |k    r|| j        _        | j        j        |                             d           | j        j        |                                          | j                            |           | j        	                    |           dS dS )r4   TN)
r   r   rG   rA   r   setFocusr   r   sig_current_changedr`   r   s     r   r   zTabWidget.setCurrentIndex   s    %''(-DK%K&11$777K&//111J&&u---$))%00000 ('r   c                     |                                  }d}|r:| j        j        |                                           }|r|                                }|S )r4   r@   )r   r   rA   rX   )r/   r   rX   rl   s       r   currentTextzTabWidget.currentText   sU    !!## 	%[():):)<)<=F %{{}}r   Nr@   c                     |st          d          | j                            ||           | j                            |           |                     d           dS )r4   ztab widget cant be Noner   N)	TypeErrorr   r   r   rQ   r   )r/   r   r   rX   s       r   addTabzTabWidget.addTab   sa     	75666D$'''
V$$$Qr   rX   rb   rn   ro   c                 >    | j                             |||           dS )z3Add links to the bottom area of the custom tab bar.N)r   ry   )r/   rX   rb   rn   s       r   ry   zTabWidget.add_link   s"    T3
33333r   c                 8    | j                                          d S r^   )r   r   r   s    r   r   zTabWidget.add_advertisement  s    %%'''''r   c                 <    | j                             ||           dS )r[   N)r   rm   )r/   rX   rb   s      r   rm   zTabWidget.add_social  s     tS)))))r   c                 :    | j                             |           dS rU   )r   rY   rW   s     r   rY   zTabWidget.set_links_header  s    $$T*****r   c                 8    | j                                          dS )zRefresh size of buttons.N)r   r   r   s    r   r   zTabWidget.refresh  s    r   )Nr@   r   r^   )r   r   r   r   r   r   r   r   r_   r)   r~   r   r   r   r   r   r   r   r   r   ry   r   rm   rY   r   r;   r<   s   @r   r   r      sT       HH &++fVnnOB B B B B2" " "( ( (* * *) ) )1 1 1         4 4S 4vs'; 4PVP_`cPd 4pt 4 4 4 4( ( (* * * *+ + +      r   r   )r   r   qtpy.QtCorer   r   qtpy.QtWidgetsr   r   r   r   r	   anaconda_navigator.utilsr
   anaconda_navigator.widgetsr   r   r   r   r   r   r   r   r   r!   r#   r%   r>   r   r   r   r   <module>r      s   , +  " " " " " " " " Y Y Y Y Y Y Y Y Y Y Y Y Y Y 0 0 0 0 0 0                 
% % % % %Y % % %% % % % %	 % % %% % % % %i % % %% % % % %	 % % %% % % % % % % %$w' w' w' w' w'W w' w' w't\ \ \ \ \ \ \ \ \ \r   