
    G@d?                        d 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  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 Zedk    r e             dS dS )zStatus bar widgets.    N)StatusBarWidget_)to_text_string)WorkerManager)get_git_refsc                   "    e Zd ZdZdZd Zd ZdS )ReadWriteStatusz3Status bar widget for current file read/write mode.read_write_statusc                 b    |rdnd}|                      |                    d                     dS )zUpdate read/write file status.RRW   N)	set_valueljust)selfreadonlyvalues      Dlib/python3.11/site-packages/spyder/plugins/editor/widgets/status.pyupdate_readonlyzReadWriteStatus.update_readonly   s2    )Tu{{1~~&&&&&    c                      t          d          S )%Return localized tool tip for widget.zFile permissionsr   r   s    r   get_tooltipzReadWriteStatus.get_tooltip   s    #$$$r   N)__name__
__module____qualname____doc__IDr   r    r   r   r
   r
      s=        ==	B' ' '
% % % % %r   r
   c                   "    e Zd ZdZdZd Zd ZdS )	EOLStatusz3Status bar widget for the current file end of line.
eol_statusc                     t          |          }ddd                    |d          }|                     |           dS )zUpdate end of line status.CRLFLF)ntposixCRN)r   getr   )r   os_namer   s      r   
update_eolzEOLStatus.update_eol&   sD     ))--11'4@@ur   c                      t          d          S )r   zFile EOL Statusr   r   s    r   r   zEOLStatus.get_tooltip,       "###r   N)r   r   r   r   r    r-   r   r!   r   r   r#   r#   "   s=        ==	B  $ $ $ $ $r   r#   c                   "    e Zd ZdZdZd Zd ZdS )EncodingStatusz0Status bar widget for the current file encoding.encoding_statusc                 r    t          |                                          }|                     |           dS )z Update encoding of current file.N)strupperr   )r   encodingr   s      r   update_encodingzEncodingStatus.update_encoding5   s1    H##%%ur   c                      t          d          S )r   Encodingr   r   s    r   r   zEncodingStatus.get_tooltip:   s    }}r   N)r   r   r   r   r    r7   r   r!   r   r   r1   r1   1   s=        ::	B  
    r   r1   c                   "    e Zd ZdZdZd Zd ZdS )CursorPositionStatusz7Status bar widget for the current file cursor position.cursor_position_statusc                 h    d                     |dz   |dz             }|                     |           dS )zUpdate cursor position.zLine {}, Col {}   N)formatr   )r   lineindexr   s       r   update_cursor_positionz+CursorPositionStatus.update_cursor_positionC   s7    !((519==ur   c                      t          d          S )r   zCursor positionr   r   s    r   r   z CursorPositionStatus.get_tooltipH   r/   r   N)r   r   r   r   r    rB   r   r!   r   r   r;   r;   ?   s=        AA	!B  
$ $ $ $ $r   r;   c                   \     e Zd ZdZdZ fdZ fdZd ZddZd Z	d	 Z
d
 Zd Zd Z xZS )	VCSStatusz!Status bar widget for system vcs.
vcs_statusc                     t                                          |           t          d          | _        d | _        d | _        d | _        d S )Nr>   )max_threads)super__init__r   _worker_manager_git_is_working_git_job_queue_last_git_job)r   parent	__class__s     r   rJ   zVCSStatus.__init__Q   sL       ,;;;#"!r   c                 |    t                                          |           | j                                         d S )N)rI   
closeEventrK   terminate_all)r   eventrP   s     r   rR   zVCSStatus.closeEventY   s6    5!!!**,,,,,r   c                 2    |                      |d           dS )Update vcs status.N)
update_vcs)r   idxfnamefname2s       r   update_vcs_statezVCSStatus.update_vcs_state]   s    t$$$$$r   Fc                 `   | j         ||fk    r|s	d| _        dS | j        r||f| _        dS | j                                         | j                            | j        |          }|j                            | j	                   ||f| _         d| _        d| _        |
                                 dS )rV   NT)rN   rM   rL   rK   rS   create_python_workerr   sig_finishedconnectprocess_git_datastart)r   rY   rA   forceworkers        r   rW   zVCSStatus.update_vcsa   s    %///"&DF 
	#(%.D ..000)>>!5* *F''(=>>>"'D"&D#'D LLNNNNNr   c                 D    t          t          j        |                    S )z3Get Git active branch, state, branches (plus tags).)r   ospdirname)r   rY   s     r   r   zVCSStatus.get_git_refss   s    CK..///r   c                 2   |\  }}}|r|nd}t          |          r%|d                    t          |                    z   }|                     t          |                     |                     |           d| _        | j        r | j        | j          dS dS )z%Receive data from git and update gui. z [{}]FN)lenr?   
setVisibleboolr   rL   rM   rW   )r   rc   outputerrorbranchesbranchfiles_modifiedtexts           r   r`   zVCSStatus.process_git_dataw   s    +1(&.'vvR~ 	>'..^)<)<===DV%%%t$ 	2DOT01111	2 	2r   c                     dS )zChange current branch.Nr!   r   s    r   change_branchzVCSStatus.change_branch   s    r   c                      t          d          S )r   z
Git branchr   r   s    r   r   zVCSStatus.get_tooltip   s    r   c                 ,    |                      d          S )N	code_fork)create_iconr   s    r   get_iconzVCSStatus.get_icon   s    ,,,r   )F)r   r   r   r   r    rJ   rR   r[   rW   r   r`   rs   r   rx   __classcell__)rP   s   @r   rE   rE   M   s        ++	B" " " " "- - - - -% % %   $0 0 02 2 2    - - - - - - -r   rE   c                     ddl m}  ddlm}  |d          } |             }|                    d           |                    dd           |                                }g }t          t          t          t          fD ]#} |||          }|                    |           $|                                 |                                 d S )	Nr   )QMainWindow)qapplication   )	test_timezStatus widgets testi  i,  )qtpy.QtWidgetsr{   spyder.utils.qthelpersr|   setWindowTitleresize	statusBarr
   r#   r1   r;   appendshowexec_)r{   r|   appwin	statusbarstatus_widgetsstatus_classstatus_widgets           r   testr      s    ******333333
,
#
#
#C
+--C,---JJsCIN()^-/ - -$S)44m,,,,HHJJJIIKKKKKr   __main__)r   os.pathpathre   spyder.api.widgets.statusr   spyder.api.translationsr   spyder.py3compatr   spyder.utils.workersr   spyder.utils.vcsr   r
   r#   r1   r;   rE   r   r   r!   r   r   <module>r      s           6 5 5 5 5 5 % % % % % % + + + + + + . . . . . . ) ) ) ) ) )% % % % %o % % %$ $ $ $ $ $ $ $    _   $ $ $ $ $? $ $ $A- A- A- A- A- A- A- A-H  $ zDFFFFF r   