45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
from kitty.fast_data_types import Screen
|
|
from kitty.tab_bar import DrawData, ExtraData, TabBarData, draw_title
|
|
|
|
def draw_tab(
|
|
draw_data: DrawData, screen: Screen, tab: TabBarData,
|
|
before: int, max_title_length: int, index: int, is_last: bool,
|
|
extra_data: ExtraData
|
|
) -> int:
|
|
orig_fg = screen.cursor.fg
|
|
orig_bg = screen.cursor.bg
|
|
left_sep, right_sep = ('', '')
|
|
|
|
def draw_sep(which: str) -> None:
|
|
screen.cursor.bg = draw_data.default_bg
|
|
screen.cursor.fg = orig_bg
|
|
screen.draw(which)
|
|
screen.cursor.bg = orig_bg
|
|
screen.cursor.fg = orig_fg
|
|
|
|
if max_title_length <= 1:
|
|
screen.draw('…')
|
|
elif max_title_length == 2:
|
|
screen.draw('…|')
|
|
elif max_title_length < 6:
|
|
draw_sep(left_sep)
|
|
screen.draw((' ' if max_title_length == 5 else '') + '…' + (' ' if max_title_length >= 4 else ''))
|
|
draw_sep(right_sep)
|
|
else:
|
|
draw_sep(left_sep)
|
|
screen.draw(' ')
|
|
draw_title(draw_data, screen, tab, index)
|
|
extra = screen.cursor.x - before - max_title_length
|
|
print("extra:%d" %(extra))
|
|
if extra >= 0:
|
|
screen.cursor.x -= extra + 3
|
|
screen.draw('…')
|
|
elif extra == -1:
|
|
screen.cursor.x -= 2
|
|
screen.draw('…')
|
|
screen.draw(' ')
|
|
draw_sep(right_sep)
|
|
draw_sep(' ')
|
|
|
|
return screen.cursor.x
|