version 1.2, 2009/06/03 16:05:46 |
version 1.3, 2009/06/03 16:54:26 |
|
|
size_t llen, llen2, rlen, rlen2, offset; |
size_t llen, llen2, rlen, rlen2, offset; |
size_t xx, yy, sy, size, start, width; |
size_t xx, yy, sy, size, start, width; |
struct grid_cell stdgc, gc; |
struct grid_cell stdgc, gc; |
int larrow, rarrow; |
int larrow, rarrow, utf8flag; |
|
|
left = right = NULL; |
left = right = NULL; |
|
|
|
|
if (yy == 0) |
if (yy == 0) |
goto blank; |
goto blank; |
|
|
|
/* Caring about UTF-8 in status line? */ |
|
utf8flag = options_get_number(&s->options, "status-utf8"); |
|
|
/* Work out the left and right strings. */ |
/* Work out the left and right strings. */ |
left = status_replace(s, options_get_string( |
left = status_replace(s, options_get_string( |
&s->options, "status-left"), c->status_timer.tv_sec); |
&s->options, "status-left"), c->status_timer.tv_sec); |
llen = options_get_number(&s->options, "status-left-length"); |
llen = options_get_number(&s->options, "status-left-length"); |
llen2 = screen_write_strlen("%s", left); |
llen2 = screen_write_strlen(utf8flag, "%s", left); |
if (llen2 < llen) |
if (llen2 < llen) |
llen = llen2; |
llen = llen2; |
|
|
right = status_replace(s, options_get_string( |
right = status_replace(s, options_get_string( |
&s->options, "status-right"), c->status_timer.tv_sec); |
&s->options, "status-right"), c->status_timer.tv_sec); |
rlen = options_get_number(&s->options, "status-right-length"); |
rlen = options_get_number(&s->options, "status-right-length"); |
rlen2 = screen_write_strlen("%s", right); |
rlen2 = screen_write_strlen(utf8flag, "%s", right); |
if (rlen2 < rlen) |
if (rlen2 < rlen) |
rlen = rlen2; |
rlen = rlen2; |
right[rlen] = '\0'; |
right[rlen] = '\0'; |
|
|
screen_write_start(&ctx, NULL, &c->status); |
screen_write_start(&ctx, NULL, &c->status); |
if (llen != 0) { |
if (llen != 0) { |
screen_write_cursormove(&ctx, 0, yy); |
screen_write_cursormove(&ctx, 0, yy); |
screen_write_nputs(&ctx, llen + 1, &stdgc, "%s ", left); |
screen_write_nputs( |
|
&ctx, llen + 1, &stdgc, utf8flag, "%s ", left); |
if (larrow) |
if (larrow) |
screen_write_putc(&ctx, &stdgc, ' '); |
screen_write_putc(&ctx, &stdgc, ' '); |
} else { |
} else { |
|
|
/* Draw the last item. */ |
/* Draw the last item. */ |
if (rlen != 0) { |
if (rlen != 0) { |
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy); |
screen_write_cursormove(&ctx, c->tty.sx - rlen - 1, yy); |
screen_write_nputs(&ctx, rlen + 1, &stdgc, " %s", right); |
screen_write_nputs( |
|
&ctx, rlen + 1, &stdgc, utf8flag, " %s", right); |
} |
} |
|
|
/* Draw the arrows. */ |
/* Draw the arrows. */ |