U
    &ŸJ^×)  ã                   @   sP  d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	dd„ Z
zd dlZd dlT W n ek
r„   e
dƒ Y nX dZe d¡Ze d	¡Ze d
ed ¡Ze ded ¡Ze dd¡Ze dd¡Ze dd¡Zed e Zed e Zej e¡sed e Zej e¡s.ed e Zej e¡sHed e ZdZdZde ZdZeeƒeje< eejeeƒ< e  eed ¡ e !e¡ ejZ"dd„ Z#dd „ Z$d!d"„ Z%d#d$„ Z&d e"d%ƒd&fe"d'ƒd(efffd)d*„Z'd+d,„ Z(d-d.„ Z)d/d0„ Z*d1d2„ Z+d3d4„ Z,d5d6„ Z-d7d8„ Z.d9d:„ Z/d;d<„ Z0d=d>„ Z1d?d@„ Z2dAdB„ Z3e4dCkrLe3ƒ  dS )Dé    )Úprint_functionNc                 C   s   t d|  ƒ t d¡ d S )Nz	ERROR: %sé   )ÚprintÚsysÚexit)Úmsg© r   ú /usr/lib/byobu/include/config.pyÚerror%   s    r
   )Ú*z(Could not import the python snack moduleZbyobuÚHOMEÚUSERÚBYOBU_CONFIG_DIRz/.byobuÚBYOBU_RUN_DIRz/.cache/byobuÚBYOBU_BACKENDÚtmuxZ	SOCKETDIRz/var/run/screenÚBYOBU_PREFIXz/usrz/share/z/share/doc/ú/z/share/doc/packages/ÚAz—If you are using the default set of keybindings, press
<F5> or <ctrl-a-R> to activate these changes.

Otherwise, exit this session and start a new one.z%s/reload-requiredúz/poc                 C   sX   z<dd l }dd l}dd l}dd l}| d| | |jd¡¡}W n tk
rR   Y d S X |S )Nr   ZhhZ1234)ÚfcntlÚtermiosÚstructÚosZunpackZioctlZ
TIOCGWINSZÚ	Exception)Úfdr   r   r   r   Úcrr   r   r	   Úioctl_GWINSZL   s    r   c               	   C   sj   zPt j t¡st  td¡ ttdƒ} |  ¡  tdkrNt	 
tdddddt g¡ W n tk
rd   Y nX d S )	Nií  ÚwÚscreenz-XZatÚ0Úsourcez
%s/profile)r   ÚpathÚexistsr   ÚmakedirsÚopenÚRELOAD_FLAGÚcloser   Ú
subprocessÚcallr   )Úfr   r   r	   Úreload_requiredY   s    
r+   c                  C   s¬   t dƒpt dƒpt dƒ} | sZz(t t ¡ tj¡}t |ƒ} t |¡ W n tk
rX   Y nX | sŒztd td f} W n tk
rŠ   d} Y nX t| d d ƒt| d d ƒfS )Nr   r   é   ZLINESZCOLUMNS)é   éP   é   )	r   r   r%   ÚctermidÚO_RDONLYr'   r   ÚenvÚint)r   r   r   r   r	   Úterminal_sizeg   s    
r4   c                 C   sÎ   |rt dƒ}nt dƒ}tdddd}| t dƒd¡ | t dƒd	¡ | t d
ƒd¡ | |d¡ t| ddtffdd}t| t dƒdd	ƒ}|j|dddd |j|dddd | | ¡ ¡dkrÂdS | 	¡ S d S )Nz.Byobu currently launches at login (toggle off)z4Byobu currently does not launch at login (toggle on)é   é<   r   )ÚheightÚwidthÚ
returnExitzHelp -- Quick Start GuideúToggle status notificationsr,   úChange escape sequenceé   é   ZExitr   ©Zcompactz Byobu Configuration Menur   )r=   r,   r=   r,   ©Úpadding©r   r   r   r   )
Ú_ZListboxÚappendÚ	ButtonBarÚESCÚGridFormÚaddÚbuttonPressedÚrunOnceZcurrent)ÚsnackScreenÚsizeÚisInstalledZinstalltextÚliÚbbÚgr   r   r	   Úmenu}   s    
rP   ZOkayZokayÚCancelÚcancelc           
      C   s^   t ||||d}t| |dd}t| |ddƒ}	|	j|dddd |	j|dddd | |	 ¡ ¡S )	N©Úscrollr   r>   r,   r   )r   r   r   r   r?   rA   )ÚTextboxrD   rF   rG   rH   rI   )
rJ   r8   r7   ÚtitleÚtextrT   ÚbuttonsÚtrN   rO   r   r   r	   Ú
messagebox‘   s    rZ   c                 C   s¤   t td t d ƒ}| ¡ }| ¡  | dtƒ d¡}tdd|ddd}t| t	dƒd	t
ffdd
}t| t	dƒddƒ}| |dd¡ |j|dddd | | ¡ ¡}dS )Nz/help.z.txtz<esckey>r   éC   é   )rT   ZwrapÚMenurP   r>   z
Byobu Helpr,   r=   r   rA   r?   éd   )r%   ÚDOCr   Úreadr'   ÚreplaceÚ	getesckeyrU   rD   rB   rE   rF   rG   rH   rI   )rJ   rK   r*   rW   rY   rN   rO   Úbuttonr   r   r	   Úhelpš   s    rd   c            	   	   C   s  i } i }i }t d td fD ]¾}tj |¡rztt|ƒ ¡ ||ƒ W n  tk
rd   t	d| ƒ Y nX t
dkr„d|d |d f }n d|d	 |d
 |d |d f }| ¡ D ],}| d¡rÐ| dd¡}d| |< q¬d| |< q¬qg }t|  ¡ ƒ}t|ƒD ]}t| | ƒ|g}| |¡ qô|S )Nú/status/statusú/statuszInvalid configuration [%s]r   z%s %sÚ	tmux_leftÚ
tmux_rightz%s %s %s %sÚscreen_upper_leftÚscreen_upper_rightÚscreen_lower_leftÚscreen_lower_rightú#Ú r    Ú1)ÚSHAREr   r   r"   r#   Úexecr%   r`   r   r
   r   ÚsplitÚ
startswithra   ÚlistÚkeysÚsortedr3   rC   )	ÚstatusÚgloÚlocr*   ÚitemsÚirM   ru   Zwindowr   r   r	   Ú
readstatus¨   s.     

r|   c                 C   sv   d}i }i }t ttd ƒ ¡ ||ƒ ||   ¡ D ]@}| d¡rJ| dd¡}|| dkrd|d| 7 }q0|d| 7 }q0|S )Nrn   re   rm   r   ú z #)rq   r%   rp   r`   rr   rs   ra   )Úsrw   Únewrx   ry   r{   r   r   r	   ÚgenstatusstringÄ   s    
r€   c           	   	   C   sô   i }t d }| D ]}|d ||d < qdD ]Ä}| t¡r*zt|dƒ}W n" tk
rh   ttd dƒ}Y nX | ¡ }| ¡  zt|dƒ}W n tk
r¦   t|dƒ}Y nX |D ]:}| d	| ¡rÜt||ƒ}| 	d
||f ¡ q¬| 	|¡ q¬|j q*d S )Nrf   r   r   )rg   rh   ri   rj   rk   rl   Úrre   r   za+z%s=z%s="%s"
)
r   rs   r   r%   r   rp   Ú	readlinesr'   r€   Úwrite)	rz   rw   r"   r{   Úkeyr*   ÚlinesÚlÚvalr   r   r	   ÚwritestatusÓ   s,    

rˆ   c           	      C   s  t ƒ }tdƒ}tddd}d}|D ]0}|d dkrJ|j|d ||d d |d }q"t| tdƒd	ftd
ƒdtffdd}t| tdƒddƒ}|j|dddddd | |dd¡ |j|dddd | 	| 
¡ ¡dkrd}|D ]*}|d dkrþ| |¡d |d< |d }qÜt|ƒ tƒ  dS )Nrn   é   r   rS   r   éÿÿÿÿ)ZselectedÚApplyÚapplyrQ   rR   r>   r:   r,   r=   )r=   r   r   r   )Ú
anchorLeftZ	anchorTopr@   )r=   r   r   r   r?   r^   )r|   ÚLabelZCheckboxTreerC   rD   rB   rE   rF   rG   rH   rI   ZgetEntryValuerˆ   r+   )	rJ   rK   ZitemlistZrlr   ÚcountÚitemrN   rO   r   r   r	   Útogglestatusí   s,    
$
r‘   c                 C   s|   d}|rBt  dg¡dkr tdƒ}t| ddtdƒ|tdƒfd	}d
S t  dg¡dkrZtdƒ}t| ddd|tdƒfd	}dS d S )Nrn   zbyobu-launcher-uninstallr   z/Byobu will not be launched next time you login.r6   r,   ZMessager]   )rX   ée   zbyobu-launcher-installz9Byobu will be launched automatically next time you login.r^   )r(   r)   rB   rZ   )rJ   rK   rL   Úoutrc   r   r   r	   Úinstall  s    r”   c                 C   sD   t | dƒ}z| |¡ W n tk
r6   | ¡  Y d S X | ¡  d S )NÚa)r%   rƒ   ÚIOErrorr'   )Úpr~   r*   r   r   r	   Úappendtofile  s    
r˜   c                  C   s¨   d} t dkrDtd }tj |¡r>t|ƒD ]}| d¡r(|} q(qztS n6td }tj |¡rvt|ƒD ]}| d¡r`|} q`ntS | dkr†tS | |  d¡d  }|d	kr¤d
}|S )Nrn   r   z/keybindings.tmuxzset -g prefix z/keybindingszescape ú^r   ú`r}   )	r   r   r   r"   r#   r%   rs   ÚDEF_ESCÚfind)Úliner"   r†   Úescr   r   r	   rb     s(    

rb   c                 C   s4   |   ¡ r0ttjdƒ}tjdd| g|d | ¡  d S )Nr   zbyobu-ctrl-ar   )Ústdout)Úisalphar%   r   Údevnullr(   r)   r'   )r„   Znullfr   r   r	   Ú	setesckey9  s    r¢   c                 C   sf  t dtƒ dd}ttdƒƒ}t| tdƒdftdƒdtffdd	}t| td
ƒddƒ}|j|ddddd |j|dddd | |dd¡ | d¡ d}|r&| 	¡ }|dkr | 
¡ }t|ƒdkrÎ| |d ¡ |dksÞ|dkrè| t¡ zt| 
¡ ƒ}	| t¡ W n tk
r   d}	Y nX q”d}q”|  ¡  | |¡}
|
dkrbt| 
¡ ƒ tƒ  |
dkrbdS dS )Nr,   r   )rW   r9   zEscape key: ctrl-r‹   rŒ   rQ   rR   r>   r;   r=   r   )r   r   r   r   )r   r@   )r   r^   ZTIMERr   ú\Zfoor   )ZEntryrb   rŽ   rB   rD   rE   rF   rG   ZsetTimerÚrunÚvalueÚlenÚsetr›   r3   r   Z	popWindowrH   r¢   r+   )rJ   rK   rž   ZesclrN   rO   ZloopZwhichr‡   Zdummyrc   r   r   r	   ÚchgescA  s>    $





r¨   c                  C   sj   t j td ¡rdS z&tdt ƒD ]} d| kr" W dS q"W n tk
rP   Y dS X t j dt ¡rfdS dS )Nz/disable-autolaunchr   z%s/.profilezbyobu-launchr   z/etc/profile.d/Z97-%s.sh)r   r"   r#   r   r%   r   r   ÚPKG)r   r   r   r	   Ú
autolaunchg  s    rª   c                  C   s¸   t ƒ } tƒ }| ddtdƒ¡ | tdƒ¡ tƒ }d}|dkr¢t|| |ƒ}|dkr^t|| ƒ}q6|dkrrt|| ƒ}q6|dkr†t	|| ƒ}q6|dkr6t
|| |ƒ}tƒ }q6| ¡  t d¡ d	S )
z$This is the main loop of our utilityr   r   zByobu Configuration Menuz6<Tab> between elements | <Enter> selects | <Esc> exitsr^   r,   r<   r=   N)r4   ZSnackScreenZdrawRootTextrB   ZpushHelpLinerª   rP   rd   r‘   r¨   r”   Zfinishr   r   )rK   rJ   rL   Útagr   r   r	   Úmainu  s&    r¬   Ú__main__)5Z
__future__r   r   r   Úos.pathÚtimeÚstringr(   ÚgettextÚglobr
   Zsnackr   r©   Úgetenvr   r   r   r   r   ZBYOBU_SOCKETDIRr   rp   r_   r"   r#   r›   ZRELOADr&   rE   ÚordZhotkeysÚbindtextdomainÚ
textdomainrB   r   r+   r4   rP   rZ   rd   r|   r€   rˆ   r‘   r”   r˜   rb   r¢   r¨   rª   r¬   Ú__name__r   r   r   r	   Ú<module>   st   


$	&
