
    G@d~                         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
mZmZmZmZmZmZ ddlmZ ddlmZ dZ G d d	e          Zd
 Zedk    r e             dS dS )z
Login dialog to authenticate on Github.

Adapted from qcrash/_dialogs/gh_login.py of the
`QCrash Project <https://github.com/ColinDuquesnoy/QCrash>`_.
    N)QEventQt)	QCheckBoxQDialogQFormLayoutQLabel	QLineEditQPushButtonQSizePolicyQSpacerItem
QTabWidgetQVBoxLayoutQWidget)_)to_text_stringz9https://github.com/settings/tokens/new?scopes=public_repoc                   B    e Zd ZdZd	dZd Zd Zd Zed             Z	dS )
DlgGitHubLoginz)Dialog to submit error reports to Github.Fc                 
   t          j        | |           t          d          }|                     dd           |                     |           |                     |                                 t          j         z             d}t          |
                    |                    }|                    d           t                      | _        t                      }|                    dddd           t          t          d	          
                    t                               }|                    d
           |                    d
           |                    t          j                   t          d          }	|                    dt          j        |	           t/                      | _        | j                            t.          j                   | j        j                            | j                   |                    dt          j        | j                   d | _        |                                  rtC          t          d                    | _        | j        "                    t          d                     | j        #                    |           |                    dt          j        | j                   tI                      }
tK                      }|&                    tO          dd                     |(                    |           |&                    tO          ddtR          j*                             |+                    |           |&                    tO          ddtR          j*                             |
,                    |           | j        -                    |
t          d                     t]          t          d                    | _/        | j/        j0                            | j1                   | j/        2                    d
           tK                      }|(                    |           |(                    | j                   |(                    | j/                   | ,                    |           |r| j        3                    |           n| j        4                                 | 5                    | 6                                | 7                                           d S )NzSign in to Githubi  iw  z><html><head/><body><p align="center">{title}</p></body></html>)titlezfont-size: 16px;r   a  For users <b>with</b> two-factor authentication enabled, or who prefer a per-app token authentication.<br><br>You can go <b><a href="{}">here</a></b> and click "Generate token" at the bottom to create a new token to use for this, with the appropriate permissions.TzToken:    zRemember tokenz"Spyder will save your token safely      2   )vPolicyzAccess TokenzSign in)8r   __init__r   resizesetWindowTitlesetWindowFlagswindowFlagsr   WindowContextHelpButtonHintr   formatsetStyleSheetr   tabsr   setContentsMargins	TOKEN_URLsetOpenExternalLinkssetWordWrapsetAlignmentAlignJustify	setWidget	LabelRoler	   le_tokensetEchoModePasswordtextChangedconnectupdate_btn_state	FieldRolecb_remember_tokenis_keyring_availabler   
setToolTip
setCheckedr   r   addSpacerItemr   	addWidgetr   	Expanding	addLayout	setLayoutaddTabr
   
bt_sign_inclickedacceptsetDisabledsetTextsetFocussetFixedSizewidthheight)selfparenttokenremember_tokenr   htmllbl_htmltoken_form_layouttoken_lbl_msg	lbl_token
token_authtoken_layoutlayouts                >lib/python3.11/site-packages/spyder/widgets/github/gh_login.pyr   zDlgGitHubLogin.__init__"   s   v&&&%&&CE"""""@!@@	B 	B 	B,$++E+22331222 LL	 (MM,,RB;;;q "@  A  A BHDMBO BOP P 	**4000!!$'''""2?3339%%	##A{'<iHHH!!!)"4555!))$*?@@@##A{'<dmLLL!%$$&& 	@%.q1A/B/B%C%CD""--a 1? /@ /@ A A A"--n==='';+@(,(>@ @ @ YY
"}}"";q!#4#4555}---""2{'<===	? 	? 	?0111""2{'<===	? 	? 	?\***	Q~%6%6777 &a	ll33''444##D))) """###)))v  	%M!!%((((M""$$$$**,,66666    c                 F   | j         g}||v r|                                t          j        k    rr|                                t
          j        k    rP|                                t
          j        z  r/| j	        
                                r|                                  dS dS )NTF)r-   typer   KeyPresskeyr   
Key_Return	modifiersControlModifierr>   	isEnabledr@   )rG   objeventinteresting_objectss       rS   eventFilterzDlgGitHubLogin.eventFilteru   s    #}o%%%%**,,&/*I*I		r},,OO%%(:: -O--// - turT   c                     t          | j                                                                                  dk    }| j                            |           d S )N )r   r-   textstripr>   
setEnabled)rG   rI   s     rS   r2   zDlgGitHubLogin.update_btn_state   sJ    t}113344::<<B""5)))))rT   c                 2    	 ddl }dS # t          $ r Y dS w xY w)z3Check if keyring is available for password storage.r   NTF)keyring	Exception)rG   rg   s     rS   r5   z#DlgGitHubLogin.is_keyring_available   s7    	NNN4 	 	 	55	s    
c                    t          |||          }|                                |j        k    rO|j                                        }|j        r|j                                        }nd}t          ||          }|S t          d d          S )NF)rI   rJ   )r   exec_Acceptedr-   rc   r4   	isCheckeddict)clsrH   rI   rJ   dlgcredentialss         rS   loginzDlgGitHubLogin.login   s    VUN;;99;;#,&&L%%''E$ '!$!6!@!@!B!B!&U.<> > >K$#(* * * 	*rT   N)F)
__name__
__module____qualname____doc__r   r`   r2   r5   classmethodrq    rT   rS   r   r      s{        33Q7 Q7 Q7 Q7f  * * *   * * [* * *rT   r   c                      ddl m}   |             }t          d d           }|                                 t	          j        |                                           d S )Nr   )qapplication)spyder.utils.qthelpersry   r   showsysexitrj   )ry   appro   s      rS   testr      sY    333333
,..C
t
$
$CHHJJJHSYY[[rT   __main__)ru   r|   qtpy.QtCorer   r   qtpy.QtWidgetsr   r   r   r   r	   r
   r   r   r   r   r   spyder.config.baser   spyder.py3compatr   r&   r   r   rr   rw   rT   rS   <module>r      sH    


 " " " " " " " "2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 !           + + + + + + H	{* {* {* {* {*W {* {* {*|   zDFFFFF rT   