
    G@d                     F   d Z ddlmZ ddlZddlmZmZmZmZm	Z	m
Z
 ddlmZmZmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"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- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;  ee5j<                  xZ=Z>ej?        dk    Z@ G d de          ZA G d deA          ZB G d deA          ZC G d de$          ZD G d de          ZE G d de          ZFd ZGeHdk    r eG             dS dS ) zSpyder interactive tours    )ceilN)QEasingCurveQPointQPropertyAnimationQRectFQtSignal)QBrushQColorQIconQPainterQPainterPathQPenQPixmapQRegion)QActionQApplication	QComboBoxQDialogQGraphicsOpacityEffectQHBoxLayoutQLabelQLayoutQMainWindowQMenuQMessageBoxQPushButtonQSpacerItemQToolButtonQVBoxLayoutQWidget)__docs_url__)Panel)_)DefaultLayouts)to_binary_string)ima)get_image_path)QStylePaletteSpyderPalette)add_actionscreate_action)DialogStyledarwinc                        e Zd ZdZ e            Z fdZd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Z xZS )FadingDialogz>A general fade in/fade out QDialog with some builtin functionsc                    t          t          |                               |           || _        t	          |          | _        t          |          | _        |d         | _        |d         | _	        |d         | _
        |d         | _        d | _        d | _        d| _        g | _        g | _        g | _        g | _        |                     d           d S )Nr   F)superr0   __init__parentminopacity_minmaxopacity_maxduration_fadeinduration_fadeouteasing_curve_ineasing_curve_outeffectanim_fade_running_funcs_before_fade_in_funcs_after_fade_in_funcs_before_fade_out_funcs_after_fade_outsetModal)selfr5   opacitydurationeasing_curve	__class__s        <lib/python3.11/site-packages/spyder/plugins/tours/widgets.pyr4   zFadingDialog.__init__4   s    lD!!**6222w<<w<<'{ (+A ,R 0	"%'"$&!&(#%'"e    c                 $    |D ]} |             d S N )rF   funcsfuncs      rK   _runzFadingDialog._runI   s(     	 	DDFFFF	 	rL   c                 :    |                      | j                   d S rN   )rR   rA   rF   s    rK   _run_before_fade_inz FadingDialog._run_before_fade_inM       		$,-----rL   c                 :    |                      | j                   d S rN   )rR   rB   rT   s    rK   _run_after_fade_inzFadingDialog._run_after_fade_inP   s    		$+,,,,,rL   c                 :    |                      | j                   d S rN   )rR   rC   rT   s    rK   _run_before_fade_outz!FadingDialog._run_before_fade_outS   s    		$-.....rL   c                 :    |                      | j                   d S rN   )rR   rD   rT   s    rK   _run_after_fade_outz FadingDialog._run_after_fade_outV   rV   rL   c                     d| _         d S )NFr@   rT   s    rK   _set_fade_finishedzFadingDialog._set_fade_finishedY   s    "rL   c                     d| _         t          |           | _        |                     | j                   t	          | j        t          d                    | _        d S )NTrG   )r@   r   r>   setGraphicsEffectr   r&   r?   rT   s    rK   _fade_setupzFadingDialog._fade_setup\   sT    !,T22t{+++&K!1)!<!<> >			rL   c                    |                                   |                                  |                                  |                                  | j                            | j                   | j                            | j                   | j        	                    | j
                   | j                            | j                   | j        j                            |           | j        j                            | j                   | j        j                            | j                   | j                                         d S rN   )rU   rb   showraise_r?   setEasingCurver<   setStartValuer7   setEndValuer9   setDurationr:   finishedconnectr_   rX   startrF   on_finished_connects     rK   fade_inzFadingDialog.fade_ind   s     """			  !5666	 0111	d.///	d2333	""#6777	""4#:;;;	""4#:;;;	rL   c                 N   |                                   |                                  | j                            | j                   | j                            | j                   | j                            | j                   | j        	                    | j
                   | j        j                            |           | j        j                            | j                   | j        j                            | j                   | j                                         d S rN   )rZ   rb   r?   rf   r=   rg   r9   rh   r7   ri   r;   rj   rk   r_   r\   rl   rm   s     rK   fade_outzFadingDialog.fade_outr   s    !!###	  !6777	 0111	d.///	d3444	""#6777	""4#:;;;	""4#;<<<	rL   c                     | j         S rN   r^   rT   s    rK   is_fade_runningzFadingDialog.is_fade_running~   s    !!rL   c                     || _         d S rN   )rA   rF   rP   s     rK   set_funcs_before_fade_inz%FadingDialog.set_funcs_before_fade_in       %*"""rL   c                     || _         d S rN   )rB   ru   s     rK   set_funcs_after_fade_inz$FadingDialog.set_funcs_after_fade_in   s    $)!!!rL   c                     || _         d S rN   )rC   ru   s     rK   set_funcs_before_fade_outz&FadingDialog.set_funcs_before_fade_out   s    &+###rL   c                     || _         d S rN   )rD   ru   s     rK   set_funcs_after_fade_outz%FadingDialog.set_funcs_after_fade_out   rw   rL   )__name__
__module____qualname____doc__r	   sig_key_pressedr4   rR   rU   rX   rZ   r\   r_   rb   ro   rq   rs   rv   ry   r{   r}   __classcell__rJ   s   @rK   r0   r0   0   s       HHfhhO    *  . . .- - -/ / /. . .# # #> > >  
 
 
" " "+ + +* * *, , ,+ + + + + + +rL   r0   c                   \     e Zd ZdZ	 d fd	Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Z xZS )FadingCanvasz=The black semi transparent canvas that covers the applicationNc                     t          t                                         ||||           | _        | _        | _        t          t          j                   _	        d _
        d _        d _        d _        d _        d _        d _        d _        d _        d _        d _                             t,          j        t,          j        z                                  t,          j                                        t,          j                                        d                                t,          j                                         j         g            !                     fd fdg           dS )z;Create a black semi transparent canvas that covers the app.   NFc                  .                          d           S rN   )update_widgetsrT   s   rK   <lambda>z'FadingCanvas.__init__.<locals>.<lambda>   s    t/B/B4/H/H rL   c                  .                          d           S rN   )update_decorationrT   s   rK   r   z'FadingCanvas.__init__.<locals>.<lambda>   s    t/E/Ed/K/K rL   )"r3   r   r4   r5   tourcolorr   r*   COLOR_ERROR_2color_decorationstroke_decorationregion_maskregion_subtractregion_decorationwidgets
decorationinteraction_onpath_currentpath_subtract	path_fullpath_decorationsetWindowFlagsr   DialogFramelessWindowHintsetAttributeWA_TranslucentBackgroundWA_TransparentForMouseEventsrE   setFocusPolicyNoFocusrv   update_canvasr}   )rF   r5   rG   rH   rI   r   r   rJ   s   `      rK   r4   zFadingCanvas.__init__   s    	lD!!**67H+7	9 	9 	9	 
 &}'B C C!"#!%# !# 	BI(>>???"5666"9:::eBJ'''%%t'9&:;;;%%'H'H'H'H'K'K'K'K'M 	N 	N 	N 	N 	NrL   c                     || _         d S rN   )r   )rF   values     rK   set_interactionzFadingCanvas.set_interaction   s    #rL   c           	      	   | j                                                                         | j                                                                         }}t	                      | _        t	                      | _        t	                      | _        t          dd||          | _	        | j        
                    dd||           | j        r| j        D ]D}t	                      }||                                 |                                 |                                }|                                |                                }}|                    | j         t!          dd                    }|                                |                                }
}	|
                    t'          |	|
||                     t          |	|
||          }| j        r| j	                            |          | _	        | j                            |          | _        F| j                            | j                  | _        n| j        | _        | j        -| j        D ]#}t3          |t4                    r|g}g }|D ]}|                                 |                                 |                                }|                                |                                }}|                    | j         t!          dd                    }|                                |                                }
}	|                    |	|
||f           t9          d |D                       }	t9          d |D                       }
t;          d |D                       |	z
  }t;          d |D                       |
z
  }t	                      }|
                    t'          |	|
||                     t          |	dz
  |
dz
  |dz   |dz             }t          |	dz   |
dz   |dz
  |dz
            }|                    |          }| j        r| j	                            |          | _	        | j                            |          | _        %n| j        
                    dddd           |                     | j	                   |                                  |                                   d S )Nr   c                     g | ]
}|d          S )r   rO   .0geoms     rK   
<listcomp>z.FadingCanvas.update_canvas.<locals>.<listcomp>       333Ta333rL   c                     g | ]
}|d          S )   rO   r   s     rK   r   z.FadingCanvas.update_canvas.<locals>.<listcomp>   r   rL   c                 0    g | ]}|d          |d         z   S )r   r   rO   r   s     rK   r   z.FadingCanvas.update_canvas.<locals>.<listcomp>   s2     9 9 9*.DGd1g%9 9 9rL   c                 0    g | ]}|d          |d         z   S )r      rO   r   s     rK   r   z.FadingCanvas.update_canvas.<locals>.<listcomp>   s2     9 9 9*.DGd1g%9 9 9rL   r   r   )!r5   sizewidthheightr   r   r   r   r   r   addRectr   re   rd   frameGeometrymapTor   xyr   r   
subtractedunitedr   r   
isinstancer!   appendr6   r8   setMaskupdaterepaint)rF   whwidget	temp_pathgeor   r   pointr   r   temp_regionr   geomstemp_region_1temp_region_2s                   rK   r   zFadingCanvas.update_canvas   ss   {!!''))4;+;+;+=+=+D+D+F+F1%)^^+~~"1aA..q!Q***<#, J J(NN	%MMOOOKKMMM ..00C$'IIKK6E"LLfQllCCE 7799eggiiqA%%fQ5&&A&ABBB")!Qv">">K& P'+'7'B'B;'O'OD$%)%7%>%>y%I%I"" $ 9 9$:L M MD $D?&? N Ngw// (&iG% 8 8FMMOOOKKMMM ..00C$'IIKK6E"LLfQllCCE 7799eggiiqALL!Qv!6777733U3334433U33344 9 9279 9 9 : :<=> 9 9279 9 9 : :<=>(NN	!!&Auf"="=>>> '!QqS%'6!8 D D '!QqS%'6!8 D D+66}EE& L'+'7'>'>{'K'KD$'+';'B'B9'M'M$$9N<  ((Aq!444 	T%&&&rL   c                     || _         d S rN   )r   rF   r   s     rK   r   zFadingCanvas.update_widgets  s    rL   c                     || _         d S rN   )r   r   s     rK   r   zFadingCanvas.update_decoration  s    !rL   c                 "   t          |           }|                    t           j                   |                    | j        t          | j                             |                    | j        t          | j
        | j                             dS zOverride Qt methodN)r   setRenderHintAntialiasingfillPathr   r
   r   
strokePathr   r   r   r   rF   eventpainters      rK   
paintEventzFadingCanvas.paintEvent  s    4..h3444*F4:,>,>???4/d6K6:6L2N 2N 	O 	O 	O 	O 	OrL   c                     |                                  s.t          j        }|| _        | j                                         dS dS r   rs   r   
Key_Escapekey_pressedr   emitrF   keys     rK   rejectzFadingCanvas.reject  J    ##%% 	(-C"D %%'''''	( 	(rL   c                     dS r   rO   rF   r   s     rK   mousePressEventzFadingCanvas.mousePressEvent  s    rL   c                 d    |                                  r| j                                         dS dS Override Qt method.N)hasFocusr   
gain_focusr   s     rK   focusInEventzFadingCanvas.focusInEvent  s8     ==?? 	#I  """""	# 	#rL   c                 \    | j         j        dk    r| j                                          dS dS )r   r   N)r   step_current
lost_focusr   s     rK   focusOutEventzFadingCanvas.focusOutEvent$  s6     9!Q&&I  """"" '&rL   rN   )r~   r   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   s   @rK   r   r      s        GG%N %N %N %N %N %NN$ $ $E E EN  " " "O O O( ( (  # # ## # # # # # #rL   r   c                   p     e Zd ZdZ	 	 d fd	Zd Zd Z	 	 ddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Z xZS )FadingTipBoxz9Dialog that contains the text for each frame in the tour.Nc	                    t          t          |                               ||||           | j        | _        || _        || _        d | _        d| _        d| _	        d | _
        |                     t          j                   |                     t          j        t          j        z  t          j        z             |                     d           d }	 |	t'          j        d                    | _         |	t'          j        d                    | _         |	t'          j        d                    | _         |	t'          j        d                    | _         |	t'          j        d	                    | _        t5          t7          d
                    | _        d | _        t=                      | _        tA                      | _!        tA                      | _"        tG                      | _$        tA                      | _%        tA                      | _&        | j&        '                    d           | j&        (                    | j	                   | j&        )                    | j	                   | j%        *                    t          j+                   | j&        ,                    d           | j&        | j"        | j%        | j$        | j        | j        | j        | j        | j        | j        | j        g| _-        t]          d          }
|| _/        || _0        || _1        d2                    | j1        3                                |
          | _4        | j4        5                    dd          | _4        | 6                    t          j7                   | j-        D ];}|6                    t          j8                   |9                    | j4                   <tu                      }|;                    | j$                   |<                                 |;                    | j                   |=                    t}          | j        | j                             tu                      }|;                    | j&                   |;                    | j!                   |=                    t}          dd                     tu                      }|<                                 |;                    | j                   |<                                 |=                    t}          | j        | j                             tu                      }|;                    | j                   |;                    | j                   |<                                 |;                    | j%                   |<                                 |;                    | j                   |;                    | j                   |=                    t}          | j        | j                             t                      }|@                    |           |<                                 |=                    t}          dd                     |@                    |           |@                    |           |<                                 |=                    t}          dd                     |@                    |           |=                    t}          | j        | j                             |A                    t          jC                   | D                    |           | E                    | jF        g           | G                    | jH        | jI        g           | J                    | jF        g           | K                    t          jL                   d S )Nr   ,  Fc                 v    t                      }|                    d           |                    |            |S NT)r   setAutoRaisesetIcon)iconbts     rK   
toolbuttonz)FadingTipBox.__init__.<locals>.toolbuttonA  s4    BOOD!!!JJtIrL   z
tour.closez	tour.homeztour.previousztour.endz	tour.nextzRun codeThidea  QComboBox {{
                             padding-left: 5px;
                             background-color: {}
                             border-width: 0px;
                             border-radius: 0px;
                             min-height:20px;
                             max-height:20px;
                             }}

                             QComboBox::drop-down  {{
                             subcontrol-origin: padding;
                             subcontrol-position: top left;
                             border-width: 0px;
                             }}

                             QComboBox::down-arrow {{
                             image: url({});
                             }}
                             \/      )Mr3   r   r4   r?   holderr5   r   framesoffset_shadowfixed_widthr   r   r   r   r   r   r   WindowStaysOnTopHintrE   r'   r   button_closebutton_homebutton_previous
button_endbutton_nextr   r$   
button_runbutton_disabler   button_currentr   label_imagelabel_titler   combo_titlelabel_currentlabel_contentsetOpenExternalLinkssetMinimumWidthsetMaximumWidthsetAlignmentAlignCentersetWordWrapr   r(   	color_top
color_backcombobox_backgroundformatname
stylesheetreplacer   StrongFocusr   setStyleSheetr   	addWidget
addStretchaddSpacerItemr   r    	addLayoutsetSizeConstraintr   SetFixedSize	setLayoutrv   _disable_widgetsry   _enable_widgetssetFocusr{   setContextMenuPolicyCustomContextMenu)rF   r5   rG   rH   rI   r   r  r  r  r   arrowr   
layout_toplayout_content
layout_runlayout_navigationlayoutrJ   s                    rK   r4   zFadingTipBox.__init__-  s   lD!!**67H+7	9 	9 	9i	"5666BI(>>34 	5 	5 	5e	 	 	 'Jsx'='=>>%:ch{&;&;<<)z#(?*C*CDD$*SXj%9%9::%:ch{&;&;<<%a
mm44")mm!88!88$;;#XX#XX//555**4+;<<<**4+;<<<''777&&t,,,*D,<*D,<)4?D<L,do($*=	? v&&"$#6 !$ "((@(E(E(G(G!O!O% 	( /11$<<BN+++l 	2 	2F!!"*---  1111 ]]
T-...T.///  T-?-1-?"A "A 	B 	B 	B %  !3444  !1222$$[A%6%6777 ]]
T_---  T-?-1-?"A "A 	B 	B 	B (MM##D$4555##D$8999$$&&&##D$6777$$&&&##D$4555##DO444''D4F484F)H )H 	I 	I 	I $$$[R00111((($$$[R00111*+++[);)-);= = 	> 	> 	> 	  !5666v%%t'<&=>>>$$d&:DM%JKKK&&(='>???!!""677777rL   c                 D    | j         D ]}|                    d           d S r   )r   setDisabledrF   r   s     rK   r)  zFadingTipBox._disable_widgets  s4    l 	% 	%Ft$$$$	% 	%rL   c                    |                      t          j        t          j        z  t          j        z             | j        D ]}|                    d           | j        dk    r5| j                            d           | j	                            d           n?| j        dk    r4| j
                            d           | j                            d           | j                            t          j        dk               d S )NFpreviousTnextr.   )r   r   r   r   r  r   r5  r  r  r  r
  r	  r  sysplatformr6  s     rK   r*  zFadingTipBox._enable_widgets  s    BI(>>34 	5 	5 	5l 	& 	&Fu%%%%*,, ,,T222((.... F**((...O''---##CLH$<=====rL   c                    | j                             |           | j                                         | j                            |           | j                            |           | j                            |           | j                            |           | j                            |           || _	        |5| j
                            d           | j
                            d           n|                    d          d         }t          t          |          |          | _	        | j
                            | j	                   | j
                            | j	                                                   || j                            d           nD| j                            d           t*          j        dk    r| j                            d           |                                                                  d S )Nr   .r2   FTr.   zNot available on macOS)r  setTextr  clearaddItemssetCurrentIndexr  r  r  imager  setFixedHeightsetFixedWidthsplitr   r(   	setPixmapsetFixedSizer   r  
setVisibler:  r;  
setToolTipr3  activate)	rF   titlecontentcurrentrB  runr  step	extensions	            rK   set_datazFadingTipBox.set_data  s     '''   !!&)))((...
 	""7+++##G,,,""7+++
=++A...**1----C((,I !6!6	BBDJ&&tz222))$*//*;*;<<<;O&&u----O&&t,,,|x''**+CDDD 	     rL   c                     t          |          | _        t          |          | _        |                     t	          | j        | j                             d S rN   )r   r   r   mover   )rF   r   r   s      rK   set_poszFadingTipBox.set_pos  sB    aa		&(()))))rL   c                 D   |                                  }d}| j        }|                                |                                }}|                                |z
  |                                |z
  }}d\  }}	||}}
t                      | _        | j                            |
|	|z              | j        	                    |
|z
  |	||dd           | j        
                    ||z   |	           | j        	                    ||	||dd           | j        
                    |||z
             | j        	                    |||z
  ||dd           | j        
                    |
|z
  |           | j        	                    |
|z
  ||z
  ||dd           | j                                         d}d}||}	}||z
  }
t                      | _        | j        
                    |
|	|z              | j                            |
|	|z              | j        	                    |
|z
  |	||dd           | j        
                    ||z   |	           | j        	                    ||	||dd           | j        
                    ||	|z              | j        
                    |
|	|z              d S )	Nr   )r   r           g     V@g     f@g     p@$   r   )geometryr  r   r   r   r   r   round_rect_pathmoveToarcTolineTocloseSubpathtop_rect_path)rF   r   radiusshadowx0y0r   r   lefttoprightbottomheaderoffsets                 rK   build_pathszFadingTipBox.build_paths  s   mmoo##%%''B		f,cjjllV.Cv	cvv+~~##E3<888""5<ffc#'	) 	) 	)##DK555""4ffdDIII##D&-888""4#'	) 	) 	)##E&L&999""5<#($	0 	0 	0))+++ Fc )^^!!%v666!!%v666  vsFFCNNN!!$v+s333  sFFD$GGG!!$f555!!%v66666rL   c                 p   |                                   t          |           }|                    t          j                   |                    | j        | j                   |                    | j        | j                   |	                    | j        t          t          j        d                     dS )r   r   N)ri  r   r   r   r   rY  r  r^  r  r   r   r   grayr   s      rK   r   zFadingTipBox.paintEvent  s    4..h3444-t???+T^<<<4/bgq1A1ABBBBBrL   c           
         |                                 }|| _        t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        g
}||v r/|                                 s| j                                         dS dS dS r   )r   r   r   	Key_RightKey_LeftKey_DownKey_Upr   
Key_PageUpKey_PageDownKey_HomeKey_EndKey_Menurs   r   r   )rF   r   r   keyss       rK   keyReleaseEventzFadingTipBox.keyReleaseEvent'  s    iikkbk2;	r}boRZ6 $;;'')) ,$))+++++ ;, ,rL   c                     | j                                          |                                  |                                t          j        k    rdS dS r   )r5   re   buttonr   RightButtonr   s     rK   r   zFadingTipBox.mousePressEvent4  sG     	<<>>R^++D ,+rL   c                 8    | j                                          dS r   )r   r   r   s     rK   r   zFadingTipBox.focusOutEvent@  s     		rL   c                    t          |                                |                                          }t          |           }g }t	          | t          d          t                                }|                    d           |                    |           t          ||           |
                    |                     |                     d S )NzGo to step: )r   T)r   r   r   r   r,   r$   r   r5  r   r+   popupmapToGlobal)rF   r   posmenuactionsaction_titles         rK   context_menu_requestedz#FadingTipBox.context_menu_requestedE  s    UWWYY		**T{{$T1^+<+<577KKK  &&&|$$$ 	D'"""

4##C(()))))rL   c                     |                                  s.t          j        }|| _        | j                                         dS dS )z$Qt method to handle escape key eventNr   r   s     rK   r   zFadingTipBox.rejectS  r   rL   )NNNN)NN)r~   r   r   r   r4   r)  r*  rQ  rT  ri  r   rw  r   r   r  r   r   r   s   @rK   r   r   +  s	       CCEIFJI8 I8 I8 I8 I8 I8\% % %> > > DH !  !  !  !D* * *
$7 $7 $7L	C 	C 	C, , ,    
* * *( ( ( ( ( ( (rL   r   c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd dZd Zd Zd Zd Zd Zd Z dS )!AnimatedTourz&Widget to display an interactive tour.c           
      4    t          j         |           | _        ddg _        ddg _        ddg _        ddg _        t          j         _	        t          j        g _        d _        d _        d _        d  _        d  _        d  _        d  _        d  _        d  _        d  _        d  _        d  _        d _        d _        t7           j         j         j         j         j	                    _        t9           j         j         j         j         t:          t<          t:          	           _                             t          j                     j        j!        j"        #                     j$                    j        j%        j"        #                     j&                    j        j'        j"        #                     j(                    j        j)        j"        #                     j*                    j        j+        j"        #                     j,                    j        j-        j"        #                     j.                    j        j)        j"        #                     fd
            j        j/        j0        #                     j1                    j        j2        #                     j3                    j        j4        #                     j5                    j        j6        #                     j7                   d _8        d _9        d S )Ni  iM  rV  gffffff?      ?r   F)r   )r   r  r  r  c                  B     j         j                            d          S r   )tipsr  r5  rT   s   rK   r   z'AnimatedTour.__init__.<locals>.<lambda>  s    DI(44T:: rL   ):r!   r4   r5   duration_canvasduration_tipsopacity_canvasopacity_tipsr   blackr   r   LinearrI   current_stepr   stepscanvasr  r  
spy_windowinitial_fullscreen_stater   dockwidgetsr   rN  is_tour_set
is_runningr   r   MAIN_TOP_COLORMAIN_BG_COLORr   r   r
  clickedrk   	next_stepr  previous_stepr  
close_tourr  run_coder  
first_stepr	  	last_stepr  currentIndexChanged
go_to_stepsig_resized_resized	sig_moved_movedr   _key_pressedsetting_datahidden)rF   r5   s   ` rK   r4   zAnimatedTour.__init__^  s   v&&& !$Sz!3Z"Cj #JX
)01
	(,%  #4;0C#'#79J#':D: : : !d.?!%!3T5F&*n,95C	E E E	 	"9::: 		%--dn===	!)11$2DEEE	&..t???	$,,T];;;	%--do>>>	$,,T^<<<	$,,::::	< 	< 	<	199$/JJJ 	''666%%dk222 		!))$*;<<< "rL   c                 4   | j         r| j                                        }| j                            |                                |                                           | j                                         | j        r| 	                                 d S d S d S rN   )
r  r5   rX  r  rG  r   r   r   r  	_set_datarF   r   r   s      rK   r  zAnimatedTour._resized  s    ? 	!;''))DK$$TZZ\\4;;==AAAK%%''' !     	! 	!
! !rL   c                    | j         ru| j                                        }| j                            |                                |                                           | j        r|                                  d S d S d S rN   )	r  r5   rX  r  rS  r   r   r  r  r  s      rK   r  zAnimatedTour._moved  s|    ? 	!;''))DKTVVXXtvvxx000 !     	! 	!! !rL   c                     | j                                          | j                            | j        j                   d S rN   )r  r   r  rq   rT   s    rK   _close_canvaszAnimatedTour._close_canvas  s5    	T[-.....rL   c                     | j                             d            | j                             d            | j                                          d S rN   )r  r   r   r   rT   s    rK   _clear_canvaszAnimatedTour._clear_canvas  sJ     	""4(((%%d+++!!#####rL   c                 F   |                                   | j        }|2|d         }|(|                                 |                                 |                                  | j                            | j        j                   | j                                         d S Nr   )	r  r  rd   re   _locate_tip_boxr  ro   r  r   )rF   r   r   s      rK   
_move_stepzAnimatedTour._move_step  s     "QZF! 		$+3444	rL   c                     t           j                                        }d|v rd S d|v rD|D ]?}|                    |           |                                 |                                 @d S d|v rd S d S )Nlinuxwinr.   )r:  r;  lowerrE   r   rd   )rF   r   r   r;  r   s        rK   
_set_modalzAnimatedTour._set_modal  s    <%%''hDh!  &&&  !!DDrL   c                    g }g }|D ]}	 |                     d          d         }	 t          ||          }nV# t          $ rI d }d|v r=|                                }t          ||                     d          d                   }| Y nw xY wn"# t          $ r t	          d|           }Y nw xY w|                    |           t          |d|          }|                    |           ||fS )Nr=  r   zget_current_editor()r2   zspy_window.
dockwidget)rE  getattrAttributeErrorget_current_editorevalr   )rF   namesr  r   r  r  basetemps           rK   _process_widgetszAnimatedTour._process_widgets  s4    	% 	%D2zz#q)	":t44DD%   D-55#6688&tTZZ__R-@AA| $| " 2 2 20$00112 NN4    4t44Dt$$$$##s2   B7BAB
B	B

BB-,B-c           	      J   d| _         | j        | j        | j        }}}d                    |dz   |          }||         }d t          |          D             }d\  }}}	d\  }
}}d}d|v r|d         }d	|v r|d	         }d
|v r,||         d
         }|                     || j                  \  }
}|
| _        || _	        d|v r3||         d         }|                     || j                  \  }}|| _
        d|v r||         d         }	d|v rb| j                            |d                    |d         r|                     d| j        g           nS|                     d| j        g           n6| j                            d           |                     d| j        g           d|v r|d         }|| _        | j                            ||||	|||           |                                  | j                            |           | j                            |           d| _         dS )z4Set data that is displayed in each step of the tour.Tz{0}/{1}r   c                 R    g | ]$\  }}d                      |dz   |d                   %S )z{0}. {1}r   rK  )r  )r   ifs      rK   r   z*AnimatedTour._set_data.<locals>.<listcomp>   sD     : : :#q! '--ac1W:>> : : :rL   ) r  N)NNNNrK  rL  r   r   rB  interactFrN  )r  rO  )r  r   r  r  r  	enumerater  r  r   r  r   r  r   r  r  rN  rQ  _check_buttonsr   r   )rF   rO  r  r  rM  framecombobox_framesrK  rL  rB  r   r  r   rN  widget_namesdecos                   rK   r  zAnimatedTour._set_data  s    "/T[Ve""4!8U33t: :'0'8'8: : : !-w+;(j e'NEI&G!$<	2L#'#8#89=$J $J G[&5  !$<5L#44\59_ F  FD*(DOe4L)EK''j(9:::Z  3	{3333tyk2222K''...OOD49+...E>>,CDH	5'7E3"1 	 	> 	> 	> 	"";///%%j111!rL   c                    | j         }| j                                        }|                                |                                |                                |                                f\  }}}}|| _        || _        || _	        || _
        d}d}||d         |d                                         }|                                |                                |                                |                                f\  }}}}|d                             t          dd                    }	|	                                |	                                }}
|| j                                        k     r.|
|z   |z   }||dz  z   | j                                        dz  z
  }nD|
| j                                        z
  |z
  }||dz  z   | j                                        dz  z
  }|| j                                        z   | j
        | j        z   k    r2||| j                                        z   | j
        | j        z   z
  z
  |z
  }n^| j	        | j        dz  z   | j                                        dz  z
  }| j
        | j        dz  z   | j                                        dz  z
  }| j                            ||           d S )N   
   r   r   )r  r5   r   r   r   r   r   
width_mainheight_mainx_mainy_mainrX  r~  r   r  rT  )rF   r  r   r   r   r   r   deltarh  r   x_globy_globs               rK   r  zAnimatedTour._locate_tip_box7  s   & k''))!eeggsuuww		SZZ\\I1eV! "1~)!!n--//'*uuww'*yy{{CJJLL'B#1eV $A226!Q<<@@!&EGGII ty((((.A)DI,<,<,>,>q,@@AA!2!22U:A)DI,<,<,>,>q,@@A	((***t{T=M/MNNty//111 K$*::<=?EF  doa//$)//2C2CA2EEAd.q00493C3C3E3Ea3GGA	!QrL   c                     | j         | j        }}d | j        _        |dk    rd| j        _        ||dz
  k    rd| j        _        d S d S )Nr   r8  r   r9  )r   r  r  r  )rF   rO  r  s      rK   r  zAnimatedTour._check_buttonse  sT    'e#'	 199'1DI$519'-DI$$$ rL   c                 &   | j         j        }|t          j        k    s |t          j        k    s|t          j        k    r)| j        | j        dz
  k    r|                                  d S |t          j	        k    s |t          j
        k    s|t          j        k    r!| j        dk    r|                                  d S |t          j        k    r|                                  d S |t          j        k    r!| j        dk    r|                                  d S |t          j        k    r)| j        | j        dz
  k    r|                                  d S |t          j        k    r:| j         j                                        }| j                             |           d S d S )Nr   r   )r  r   r   rm  ro  rr  r   r  r  rn  rp  rq  r  r   r  rs  r  rt  r  ru  r  r  r  )rF   r   r  s      rK   r  zAnimatedTour._key_pressedo  sv   i#BL  C2;$6$6BO##):dj1n)L)LNNbk!!SBI%5%5bm##):a)?)?     BM!!OOBKD$5$:$:OOBJ4#4
Q#F#FNNBK))--//CI,,S11111  rL   c                 F    d| _         | j                                         d S r   )r  r  r   rT   s    rK   _hidingzAnimatedTour._hiding  s!    	rL   c                 b    | j         }| j        d         }|D ]}|                    |           d S r  )rN  r   execute_code)rF   	codelinesconsolecodelines       rK   r  zAnimatedTour.run_code  sD    H	,q/! 	+ 	+H  ****	+ 	+rL   c                     || _         || _        |d         | _        |d         | _        t	          | j                  | _        d| _        d S )Nlastr   T)r  active_tour_indexlast_frame_activer  lenr  r  )rF   indexr  r  s       rK   set_tourzAnimatedTour.set_tour  sG    $!&!'Vn%%
rL   c                    | j                                         s| j         j        j        rt          j        dk    r[| j                             d           t          d          }t          d          }t          j	        | ||t          j
                   dS | j         j        j        r| j         j                                         n?| j                             | j                                         t          j         z             dS )Nr.   TRequestz~To run the tour, please press the green button on the left of the Spyder window's title bar to take it out of fullscreen mode.F)r  isFullScreenlayouts_fullscreen_flagr:  r;  setUpdatesEnabledr$   r   informationOktoggle_fullscreensetWindowStatewindowStater   WindowFullScreen)rF   	msg_titlemsgs      rK   _handle_fullscreenzAnimatedTour._handle_fullscreen  s    O((** 	/'8	/|x''11$777iLL	 5 6 6 'i(38 8 8t&7 /'99;;;;..O//11,,./ / / urL   c                    | j                             d           |                                 rd S | j         j                            dd           | j         j                            t          j                   | j        	                                }|
                                |                                |                                |                                f\  }}}}| j        | _        | j                            ||           | j                            t'          ||                     | j                             d           | j                            | j                   |                                  d| _        d S )NFzlayout_current_temp/quick_layouts)sectionT)r  r  r  r  save_current_window_settingsquick_layout_switchr%   SpyderLayoutr5   rX  r   r   r   r   r  r   r  rG  rS  r   ro   r  r  r  )rF   r   r   r   r   r   s         rK   
start_tourzAnimatedTour.start_tour  sX   ))%000""$$ 	F<<"# 	= 	
 	
 	
 	33'	) 	) 	)k""$$!eeggsuuww		SZZ\\I1eV !2 	  ///1&&&))$///DO,,,rL   c                    | j                             | j                   | j                            d           | j                            d           |                     d| j         g           | j                                         	 | j	        | j
        j        | j                 d<   n# t          $ r Y nw xY wd| _        | j        j                            d           | j                            d           d S )NFTr  current_temp)r  rq   r  r  r  r  r   r  r   r   r5   tours_availabler  	Exceptionr  r  r  rT   s    rK   r  zAnimatedTour.close_tour  s    	4-...))%000##E***tyk***	 ! K'(>?GG 	 	 	D	  33NCCC))$/////s   
B* *
B76B7c                 l    |                                   | j                            | j                   dS )z2Hide tips dialog when the main window loses focus.N)r  r  rq   r  rT   s    rK   	hide_tipszAnimatedTour.hide_tips  s2    	4<(((((rL   c                 d    |                                   |                                  d| _        dS )z4Unhide tips dialog when the main window loses focus.FN)r  r  r  rT   s    rK   unhide_tipszAnimatedTour.unhide_tips  s/    rL   c                     |                                   | xj        dz  c_        | j                            | j                   d S Nr   r  r   r  rq   r  rT   s    rK   r  zAnimatedTour.next_step  F    Q	4?+++++rL   c                     |                                   | xj        dz  c_        | j                            | j                   d S r  r  rT   s    rK   r  zAnimatedTour.previous_step  r  rL   Nc                 z    |                                   || _        | j                            | j                   d S rN   r  )rF   numberid_s      rK   r  zAnimatedTour.go_to_step  s:    "	4?+++++rL   c                 @    |                      | j        dz
             d S r  )r  r  rT   s    rK   r  zAnimatedTour.last_step  s     
Q'''''rL   c                 0    |                      d           d S r  )r  rT   s    rK   r  zAnimatedTour.first_step  s    rL   c                 \   | j         r| j        s| j        st          j        dk    rV|                                 s>|                                  |                                 s|                                  dS dS dS |                                 s|                                  dS dS dS dS dS )z3Confirm if the tour loses focus and hides the tips.r.   N)	r  r  r  r:  r;  tour_has_focusr  any_has_focusr  rT   s    rK   r   zAnimatedTour.lost_focus  s    O 		%%		%.2k		%|x''**,, *NN$$$--// *)))))* ** * ))++ %NN$$$$$		% 		% 		% 		% 		% 		%% %rL   c                     | j         r8|                                 r&| j        s!| j        r|                                  dS dS dS dS dS )z7Confirm if the tour regains focus and unhides the tips.N)r  r  r  r  r	  rT   s    rK   r   zAnimatedTour.gain_focus  st    O 	 2 2 4 4 	 	%)[		 	 	 	 	 	 	 	rL   c                     |                                  p@| j                                         p'|                                 p|                                 }|S )z.Returns True if tour or main window has focus.)r   r5   r  isActiveWindowrF   r  s     rK   r  zAnimatedTour.any_has_focus  sT    ]]__ < 4 4 6 6 <  ""<&*&9&9&;&; 	
rL   c                     | j                                         p1| j                                        p| j                                         }|S )z8Returns true if tour or any of its components has focus.)r  r   r  r  r  s     rK   r  zAnimatedTour.tour_has_focus  sH    Y!! (T[%9%9%;%; (Y%%'' 	
rL   rN   )!r~   r   r   r   r4   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r   r   r  r  rO   rL   rK   r  r  [  s       00@ @ @D! ! !! ! !/ / /$ $ $  "  $ $ $:<" <" <"|,  ,  , \. . .2 2 2&  
+ + +       (  <0 0 0&) ) )
  , , ,
, , ,
, , , ,
( ( (  % % %        rL   r  c                   (     e Zd ZdZ fdZd Z xZS )OpenTourDialogzInitial widget with tour.c                 .   t                                          |           t          r0|                                 t          j        t          j         z  z  }n"|                                 t          j         z  }|                     |           || _        t                      }d}t          |          }t          |          }t                      }t          |                                t          j        z            }	t          |                                t          j        z            }
|                    |
|	t          j        t          j                  }|                    |           |                                 |                    |           |                                 t          r|                    dddd           n|                    dddd           t          t3          d                    }|                    dt          j                    |                    d	           t          t3          d
                    }|                    dt          j                    |                    d	           |                    d           t                      }t>          j         }t>          j!        }t>          j"        }t>          j#        }t>          j$        }t>          j%        }t>          j&        }t>          j'        }tQ          t3          d                    | _)        | j)                            d*                    ||t          j+        |t          j,        ||                     | j)        -                    d           tQ          t3          d                    | _.        | j.                            d*                    ||t          j+        |t          j,        ||                     | j.        -                    d           |                                 |                    | j)                   t          s|/                    d           |                    | j.                   t                      }|0                    |           tc                      }|                    |           t          s+|/                    d           |                    |           n*|                    |           |/                    d           tc                      }t          sh|                                 |0                    |           |/                    d           |0                    |           |                                 n*|0                    |           |0                    |           t                      }t          sh|                                 |0                    |           |/                    d           |0                    |           |                                 n*|0                    |           |0                    |           | 2                    |           | j)        j3        4                    | j5                   | j.        j3        4                    | j6                   |                     d|            |                     dddd           t          s| 7                    dd           d S d S )Nztour-spyder-logor   r  i#   zWelcome to Spyder!zfont-size: TzNCheck out our interactive tour to explore some of Spyder's panes and features.iT  z
Start toura	  QPushButton {{ background-color: {background_color};border-color: {border_color};font-size: {font_size};color: {font_color};padding: {padding}}}QPushButton:hover:!pressed {{ background-color: {color_hover}}}QPushButton:pressed {{ background-color: {color_pressed}}})background_colorborder_color	font_size
font_colorpaddingcolor_hovercolor_pressedFDismissr  r   r   zbackground-color:   (   i  i  )8r3   r4   MACwindowFlagsr   r  WindowContextHelpButtonHintr   tour_functionr   r(   r   r   intr   r-   IconScaleFactorr   scaledKeepAspectRatioSmoothTransformationrF  r#  r"  setContentsMarginsr$   r!  TitleFontSizer  ContentFontSizerD  r)   COLOR_BACKGROUND_2COLOR_ACCENT_2COLOR_ACCENT_3COLOR_ACCENT_4COLOR_BACKGROUND_4COLOR_BACKGROUND_5COLOR_BACKGROUND_6COLOR_TEXT_1r   launch_tour_buttonr  ButtonsFontSizeButtonsPaddingsetAutoDefaultdismiss_button
addSpacingr%  r    r(  r  rk   _start_tourcloserG  )rF   r5   r.  flagsimages_layouticon_filename
image_pathrB  image_labelimage_heightimage_widthtour_label_title
tour_labelbuttons_layoutdialog_tour_colorstart_tour_colorstart_tour_hoverstart_tour_presseddismiss_tour_colordismiss_tour_hoverdismiss_tour_pressedr$  r3  label_layoutvertical_layoutgeneral_layoutrJ   s                             rK   r4   zOpenTourDialog.__init__  s       	I%%''"*A66+7 7EE $$&&"*H)HHEE"""* $*#M22

##hh5<<>>K,GGHH%++--+*EEFF[,8J46 6e$$$  """,,,  """ 	;,,QB::::,,QB::: "!$8"9"9::&&'P[5N'P'PQQQ$$T*** = > >? ?
 	  !L{/J!L!LMMMt$$$  %%% %)<(7(7*9*=*=,?"/
"-aoo">">--	0 &"2.&6&$3-1  3 3	4 	4 	4$ 	..u555)!I,,77))	0 &"40&6&$3/3  5 5	6 	6 	6$ 	**5111!!###  !8999 	*%%b)))  !4555'''"}}/000 	(##A&&&"":...."":...##B'''%-- 	6&&(((%%l333&&r***%%n555&&((((%%l333%%n555$ 	6%%'''$$V,,,%%a((($$_555%%''''$$V,,,$$_555~&&&'//0@AAA#++DJ777B/@BBCCCBB/// 	(c3'''''	( 	(rL   c                 V    |                                   |                                  d S rN   )rF  r.  rT   s    rK   rE  zOpenTourDialog._start_tour  s'    

rL   )r~   r   r   r   r4   rE  r   r   s   @rK   r  r    sS        ##K( K( K( K( K(Z      rL   r  c                   f     e Zd ZdZ ed          Z ed          Z fdZd Zd Z	d Z
d Z xZS )	TourTestWindow QResizeEvent
QMoveEventc                    t          t          |                                            |                     dddd           |                     d           t          d|           | _        | j                            d           |                                 }|	                    d          }|
                    | j                   |                                  t          |           | _        t          d	          | _        t          d
          | _        t          d          | _        t%          | j                  }| j                            |           t)          |t+          d                    | _        | j                            d           | j                            d           | j                            d           t5                      }|                    | j                   |                                 |                    | j                   |                    | j                   | j                            |           |                     | j                   | j        j                             | j!                   | j        j                             | j"                   tG          |           | _$        d S )Nr   d   i  iX  zExploring QMainWindowExitzExit programz&Filetest12rG   g{Gz?r  i  )%r3   r]  r4   setGeometrysetWindowTitler   exitsetStatusTipmenuBaraddMenu	addAction	statusBarr!   r   r   ry  button1button2r   ra   r   r&   r?   rg   rh   ri   r    r"  r#  r(  setCentralWidgetr  rk   action1action2r  r   )rF   menubarfile_r>   layrJ   s        rK   r4   zTourTestWindow.__init__  sB   nd##,,...c3,,,3444FD))		~... ,,..((	""" 	 dmm!&))"3''"3'''55&&v...&v/?	/J/JKK		%%%	c"""	c"""mmdk"""dl###dl###c"""dk***##DL111$$T\222 &&			rL   c                     t          d          }d}d|d}| j                            |||            | j                                         d S )Nrd  r   )r  r   )get_tourr   r  r  )rF   r  r  dics       rK   rr  zTourTestWindow.action1  sU    &!!&))	5#t,,,	rL   c                 8    | j                                          d S rN   )r?   rl   rT   s    rK   rs  zTourTestWindow.action2  s    	rL   c                 d    t          j        | |           | j                            |           dS zReimplement Qt methodN)r   resizeEventr  r   r   s     rK   r}  zTourTestWindow.resizeEvent  s2    e,,,e$$$$$rL   c                 d    t          j        | |           | j                            |           dS r|  )r   	moveEventr  r   r   s     rK   r  zTourTestWindow.moveEvent  s1    dE***E"""""rL   )r~   r   r   r   r	   r  r  r4   rr  rs  r}  r  r   r   s   @rK   r]  r]    s        G&((K|$$I*' *' *' *' *'X    % % %
# # # # # # #rL   r]  c                      ddl m}  t          g           }t                      }|                                 |                                 d S )Nr   )qapplication)spyder.utils.qthelpersr  r   r]  rd   exec_)r  appr  s      rK   
local_testr    sJ    333333
r

C


CHHJJJIIKKKKKrL   __main__)Ir   mathr   r:  qtpy.QtCorer   r   r   r   r   r	   
qtpy.QtGuir
   r   r   r   r   r   r   r   qtpy.QtWidgetsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   spyderr"   spyder.api.panelr#   spyder.api.translationsr$   spyder.config.basespyder.plugins.layout.layoutsr%   spyder.py3compatr&   spyder.utils.icon_managerr'   spyder.utils.image_path_managerr(   spyder.utils.paletter)   r*   r  r+   r,   spyder.utils.stylesheetr-   COLOR_BACKGROUND_1r  r  r;  r+  r0   r   r   r  r  r]  r  r~   rO   rL   rK   <module>r     s           



! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !* * * * * * * * * * * * * * * * * * * *% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %        " " " " " " % % % % % %             8 8 8 8 8 8 - - - - - - ) ) ) ) ) ) : : : : : : = = = = = = = = = = = = = = = = / / / / / / "((H!I!I I	lh[+ [+ [+ [+ [+7 [+ [+ [+|Z# Z# Z# Z# Z#< Z# Z# Z#zm( m( m( m( m(< m( m( m(`	} } } } }7 } } }@R R R R RW R R RrC# C# C# C# C#[ C# C# C#L   zJLLLLL rL   