
    Je?                         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        yy)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y)ReadWriteStatusz3Status bar widget for current file read/write mode.read_write_statusc                 P    |rdnd}| j                  |j                  d             y)zUpdate read/write file status.RRW   N)	set_valueljust)selfreadonlyvalues      F/usr/lib/python3/dist-packages/spyder/plugins/editor/widgets/status.pyupdate_readonlyzReadWriteStatus.update_readonly   s    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y)	EOLStatusz3Status bar widget for the current file end of line.
eol_statusc                 f    t        |      }dddj                  |d      }| j                  |       y)zUpdate end of line status.CRLFLF)ntposixCRN)r   getr   )r   os_namer   s      r   
update_eolzEOLStatus.update_eol&   s/     )-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y)EncodingStatusz0Status bar widget for the current file encoding.encoding_statusc                 X    t        |      j                         }| j                  |       y)z Update encoding of current file.N)strupperr   )r   encodingr   s      r   update_encodingzEncodingStatus.update_encoding5   s     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y)CursorPositionStatusz7Status bar widget for the current file cursor position.cursor_position_statusc                 V    dj                  |dz   |dz         }| j                  |       y)zUpdate cursor position.zLine {}, Col {}   N)formatr   )r   lineindexr   s       r   update_cursor_positionz+CursorPositionStatus.update_cursor_positionC   s(    !((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	!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                 p    t         |   |       t        d      | _        d | _        d | _        d | _        y )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   s5     ,;#"!r   c                 X    t         |   |       | j                  j                          y )N)rI   
closeEventrK   terminate_all)r   eventrP   s     r   rR   zVCSStatus.closeEventY   s"    5!**,r   c                 (    | j                  |d       y)Update vcs status.N)
update_vcs)r   idxfnamefname2s       r   update_vcs_statezVCSStatus.update_vcs_state]   s    t$r   c                 ~   | j                   ||fk(  r
|sd| _        y| j                  r
||f| _        y| j                  j	                          | j                  j                  | j                  |      }|j                  j                  | j                         ||f| _         d| _        d| _        |j                          y)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#(%.D  ..0))>>!!5*F''(=(=>"'D"&D#'D LLNr   c                 >    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    CKK.//r   c                    |\  }}}|r|nd}t        |      r|dj                  t        |            z   }| j                  t        |             | j	                  |       d| _        | j                  r | j                  | j                    yy)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(&.vR~'..^)<==DV%t$DOOT001 r   c                      y)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                 $    | j                  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   s8    +	B"-%$02-r   rE   c                  P   ddl m}  ddlm}  |d      } |        }|j	                  d       |j                  dd       |j                         }g }t        t        t        t        fD ]  } |||      }|j                  |        |j                          |j                          y )	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

#C
-C,-JJsCIN()^-/ -$S)4m,- HHJIIKr   __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      sx      6 % + . )%o %$ $_ $? $A- A-H$ zF r   