Improve the footer
This commit is contained in:
parent
c6881e8815
commit
5c4be81f25
111
hex.c
111
hex.c
|
@ -403,8 +403,6 @@ static void
|
||||||
app_draw_footer (void)
|
app_draw_footer (void)
|
||||||
{
|
{
|
||||||
move (app_visible_items (), 0);
|
move (app_visible_items (), 0);
|
||||||
// TODO: write the footer
|
|
||||||
app_write_line ("Connecting to MPD...", APP_ATTR (HEADER));
|
|
||||||
|
|
||||||
// XXX: can we get rid of this and still make it look acceptable?
|
// XXX: can we get rid of this and still make it look acceptable?
|
||||||
chtype a_normal = APP_ATTR (BAR);
|
chtype a_normal = APP_ATTR (BAR);
|
||||||
|
@ -413,12 +411,70 @@ app_draw_footer (void)
|
||||||
struct row_buffer buf;
|
struct row_buffer buf;
|
||||||
row_buffer_init (&buf);
|
row_buffer_init (&buf);
|
||||||
|
|
||||||
// TODO: print the filename here instead
|
|
||||||
row_buffer_append (&buf, APP_TITLE, a_normal);
|
row_buffer_append (&buf, APP_TITLE, a_normal);
|
||||||
row_buffer_append (&buf, " ", a_normal);
|
row_buffer_append (&buf, " ", a_normal);
|
||||||
|
// TODO: transcode from locale encoding
|
||||||
|
row_buffer_append (&buf, g_ctx.filename, a_active);
|
||||||
|
|
||||||
// TODO: endian indication, position indication
|
struct str right;
|
||||||
|
str_init (&right);
|
||||||
|
str_append_printf (&right, "%08" PRIx64 " ", g_ctx.view_cursor);
|
||||||
|
// TODO: endian switch
|
||||||
|
str_append (&right, "?? ");
|
||||||
|
// TODO: position indication
|
||||||
|
str_append (&right, "???");
|
||||||
|
|
||||||
|
row_buffer_align (&buf, COLS - right.len, a_normal);
|
||||||
|
row_buffer_append (&buf, right.str, a_normal);
|
||||||
app_flush_buffer (&buf, COLS, a_normal);
|
app_flush_buffer (&buf, COLS, a_normal);
|
||||||
|
|
||||||
|
uint64_t end_addr = g_ctx.data_offset + g_ctx.data_len;
|
||||||
|
if (g_ctx.view_cursor < g_ctx.data_offset
|
||||||
|
|| g_ctx.view_cursor >= end_addr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
struct str x; str_init (&x);
|
||||||
|
struct str u; str_init (&u);
|
||||||
|
struct str s; str_init (&s);
|
||||||
|
|
||||||
|
int64_t len = end_addr - g_ctx.view_cursor;
|
||||||
|
uint8_t *cursor = g_ctx.data + (g_ctx.view_cursor - g_ctx.data_offset);
|
||||||
|
|
||||||
|
// TODO: convert endianity, show full numbers
|
||||||
|
// TODO: make the headers bold
|
||||||
|
const char *coding = "??";
|
||||||
|
if (len >= 1)
|
||||||
|
{
|
||||||
|
str_append_printf (&x, "x8 %02x", cursor[0]);
|
||||||
|
str_append_printf (&u, "u8 %4u", cursor[0]);
|
||||||
|
str_append_printf (&s, "s8 %4d", cursor[0]);
|
||||||
|
}
|
||||||
|
if (len >= 2)
|
||||||
|
{
|
||||||
|
str_append_printf (&x, " x16%s %04x", coding, cursor[0]);
|
||||||
|
str_append_printf (&u, " u16%s %6u", coding, cursor[0]);
|
||||||
|
str_append_printf (&s, " s16%s %6d", coding, cursor[0]);
|
||||||
|
}
|
||||||
|
if (len >= 4)
|
||||||
|
{
|
||||||
|
str_append_printf (&x, " x32%s %08x", coding, cursor[0]);
|
||||||
|
str_append_printf (&u, " u32%s %11u", coding, cursor[0]);
|
||||||
|
str_append_printf (&s, " s32%s %11d", coding, cursor[0]);
|
||||||
|
}
|
||||||
|
if (len >= 8)
|
||||||
|
{
|
||||||
|
str_append_printf (&x, " x64%s %016x", coding, cursor[0]);
|
||||||
|
str_append_printf (&u, " u64%s %20u", coding, cursor[0]);
|
||||||
|
str_append_printf (&s, " s64%s %20d", coding, cursor[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
app_write_line (x.str, APP_ATTR (HEADER));
|
||||||
|
app_write_line (u.str, APP_ATTR (HEADER));
|
||||||
|
app_write_line (s.str, APP_ATTR (HEADER));
|
||||||
|
|
||||||
|
str_free (&x);
|
||||||
|
str_free (&u);
|
||||||
|
str_free (&s);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -431,7 +487,10 @@ app_on_refresh (void *user_data)
|
||||||
app_draw_view ();
|
app_draw_view ();
|
||||||
app_draw_footer ();
|
app_draw_footer ();
|
||||||
|
|
||||||
// TODO: move the cursor where it belongs
|
int64_t diff = g_ctx.view_cursor - g_ctx.view_top;
|
||||||
|
int y = diff / ROW_SIZE;
|
||||||
|
int x = diff % ROW_SIZE;
|
||||||
|
move (y, x + 10 + x/8 + x/2);
|
||||||
|
|
||||||
refresh ();
|
refresh ();
|
||||||
}
|
}
|
||||||
|
@ -510,16 +569,22 @@ enum action
|
||||||
ACTION_NONE,
|
ACTION_NONE,
|
||||||
ACTION_QUIT,
|
ACTION_QUIT,
|
||||||
ACTION_REDRAW,
|
ACTION_REDRAW,
|
||||||
|
|
||||||
ACTION_CHOOSE,
|
ACTION_CHOOSE,
|
||||||
ACTION_DELETE,
|
ACTION_DELETE,
|
||||||
|
|
||||||
ACTION_SCROLL_UP,
|
ACTION_SCROLL_UP,
|
||||||
ACTION_SCROLL_DOWN,
|
ACTION_SCROLL_DOWN,
|
||||||
ACTION_GOTO_TOP,
|
ACTION_GOTO_TOP,
|
||||||
ACTION_GOTO_BOTTOM,
|
ACTION_GOTO_BOTTOM,
|
||||||
ACTION_GOTO_ITEM_PREVIOUS,
|
|
||||||
ACTION_GOTO_ITEM_NEXT,
|
|
||||||
ACTION_GOTO_PAGE_PREVIOUS,
|
ACTION_GOTO_PAGE_PREVIOUS,
|
||||||
ACTION_GOTO_PAGE_NEXT,
|
ACTION_GOTO_PAGE_NEXT,
|
||||||
|
|
||||||
|
ACTION_UP,
|
||||||
|
ACTION_DOWN,
|
||||||
|
ACTION_LEFT,
|
||||||
|
ACTION_RIGHT,
|
||||||
|
|
||||||
ACTION_COUNT
|
ACTION_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -565,13 +630,6 @@ app_process_action (enum action action)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ACTION_GOTO_ITEM_PREVIOUS:
|
|
||||||
app_move_selection (-1);
|
|
||||||
break;
|
|
||||||
case ACTION_GOTO_ITEM_NEXT:
|
|
||||||
app_move_selection (1);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case ACTION_GOTO_PAGE_PREVIOUS:
|
case ACTION_GOTO_PAGE_PREVIOUS:
|
||||||
app_scroll (FOOTER_SIZE - LINES);
|
app_scroll (FOOTER_SIZE - LINES);
|
||||||
app_move_selection (FOOTER_SIZE - LINES);
|
app_move_selection (FOOTER_SIZE - LINES);
|
||||||
|
@ -581,6 +639,19 @@ app_process_action (enum action action)
|
||||||
app_move_selection (LINES - FOOTER_SIZE);
|
app_move_selection (LINES - FOOTER_SIZE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case ACTION_UP:
|
||||||
|
app_move_selection (-1);
|
||||||
|
break;
|
||||||
|
case ACTION_DOWN:
|
||||||
|
app_move_selection (1);
|
||||||
|
break;
|
||||||
|
case ACTION_LEFT:
|
||||||
|
// TODO: decrement cursor, check bounds, invalidate
|
||||||
|
break;
|
||||||
|
case ACTION_RIGHT:
|
||||||
|
// TODO: increment cursor, check bounds, invalidate
|
||||||
|
break;
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
case ACTION_NONE:
|
case ACTION_NONE:
|
||||||
|
@ -647,14 +718,14 @@ g_default_bindings[] =
|
||||||
{ "End", ACTION_GOTO_BOTTOM },
|
{ "End", ACTION_GOTO_BOTTOM },
|
||||||
{ "M-<", ACTION_GOTO_TOP },
|
{ "M-<", ACTION_GOTO_TOP },
|
||||||
{ "M->", ACTION_GOTO_BOTTOM },
|
{ "M->", ACTION_GOTO_BOTTOM },
|
||||||
{ "Up", ACTION_GOTO_ITEM_PREVIOUS },
|
{ "Up", ACTION_UP },
|
||||||
{ "Down", ACTION_GOTO_ITEM_NEXT },
|
{ "Down", ACTION_DOWN },
|
||||||
{ "k", ACTION_GOTO_ITEM_PREVIOUS },
|
{ "k", ACTION_UP },
|
||||||
{ "j", ACTION_GOTO_ITEM_NEXT },
|
{ "j", ACTION_DOWN },
|
||||||
{ "PageUp", ACTION_GOTO_PAGE_PREVIOUS },
|
{ "PageUp", ACTION_GOTO_PAGE_PREVIOUS },
|
||||||
{ "PageDown", ACTION_GOTO_PAGE_NEXT },
|
{ "PageDown", ACTION_GOTO_PAGE_NEXT },
|
||||||
{ "C-p", ACTION_GOTO_ITEM_PREVIOUS },
|
{ "C-p", ACTION_UP },
|
||||||
{ "C-n", ACTION_GOTO_ITEM_NEXT },
|
{ "C-n", ACTION_DOWN },
|
||||||
{ "C-b", ACTION_GOTO_PAGE_PREVIOUS },
|
{ "C-b", ACTION_GOTO_PAGE_PREVIOUS },
|
||||||
{ "C-f", ACTION_GOTO_PAGE_NEXT },
|
{ "C-f", ACTION_GOTO_PAGE_NEXT },
|
||||||
// TODO: C-e and C-y scroll up and down
|
// TODO: C-e and C-y scroll up and down
|
||||||
|
|
Loading…
Reference in New Issue