Browse Source

Add more save as form logic

master
cancel 6 years ago
parent
commit
16bae89e9d
  1. 29
      term_util.c
  2. 1
      term_util.h
  3. 1
      tui_main.c

29
term_util.c

@ -149,6 +149,12 @@ void qblock_print_frame(Qblock* qb, bool active) {
if (qb->title) { if (qb->title) {
qblock_print_title(qb, qb->title, active ? A_NORMAL : A_DIM); qblock_print_title(qb, qb->title, active ? A_NORMAL : A_DIM);
} }
if (qb->tag == Qblock_type_qform) {
Qform* qf = qform_of(qb);
if (qf->ncurses_form) {
pos_form_cursor(qf->ncurses_form);
}
}
} }
WINDOW* qmsg_window(Qmsg* qm) { return qm->qblock.content_window; } WINDOW* qmsg_window(Qmsg* qm) { return qm->qblock.content_window; }
@ -296,9 +302,10 @@ Qform* qform_of(Qblock* qb) { return ORCA_CONTAINER_OF(qb, Qform, qblock); }
int qform_id(Qform const* qf) { return qf->id; } int qform_id(Qform const* qf) { return qf->id; }
void qform_add_text_line(Qform* qf, int id, char const* initial) { void qform_add_text_line(Qform* qf, int id, char const* initial) {
FIELD* f = new_field(1, 20, 0, 0, 0, 0); FIELD* f = new_field(1, 30, 0, 0, 0, 0);
set_field_buffer(f, 0, initial); set_field_buffer(f, 0, initial);
set_field_userptr(f, (void*)(intptr_t)(id)); set_field_userptr(f, (void*)(intptr_t)(id));
field_opts_off(f, O_WRAP | O_BLANK | O_STATIC);
qf->ncurses_fields[qf->fields_count] = f; qf->ncurses_fields[qf->fields_count] = f;
++qf->fields_count; ++qf->fields_count;
qf->ncurses_fields[qf->fields_count] = NULL; qf->ncurses_fields[qf->fields_count] = NULL;
@ -314,6 +321,11 @@ void qform_push_to_nav(Qform* qf) {
post_form(qf->ncurses_form); post_form(qf->ncurses_form);
// quick'n'dirty cursor change for now // quick'n'dirty cursor change for now
curs_set(1); curs_set(1);
form_driver(qf->ncurses_form, REQ_END_LINE);
}
void qform_set_title(Qform* qf, char const* title) {
qblock_set_title(&qf->qblock, title);
} }
void qform_free(Qform* qf) { void qform_free(Qform* qf) {
@ -327,12 +339,25 @@ void qform_free(Qform* qf) {
} }
bool qform_drive(Qform* qf, int key, Qform_action* out_action) { bool qform_drive(Qform* qf, int key, Qform_action* out_action) {
(void)qf;
switch (key) { switch (key) {
case 27: { case 27: {
out_action->any.type = Qform_action_type_canceled; out_action->any.type = Qform_action_type_canceled;
return true; return true;
} }
case KEY_RIGHT:
form_driver(qf->ncurses_form, REQ_RIGHT_CHAR);
return false;
case KEY_LEFT:
form_driver(qf->ncurses_form, REQ_LEFT_CHAR);
return false;
case 127: // backspace in terminal.app, apparently
case KEY_BACKSPACE:
case CTRL_PLUS('h'):
form_driver(qf->ncurses_form, REQ_DEL_PREV);
return false;
default:
form_driver(qf->ncurses_form, key);
return false;
} }
return false; return false;
} }

1
term_util.h

@ -124,6 +124,7 @@ int qform_id(Qform const* qf);
Qform* qform_of(Qblock* qb); Qform* qform_of(Qblock* qb);
void qform_add_text_line(Qform* qf, int id, char const* initial); void qform_add_text_line(Qform* qf, int id, char const* initial);
void qform_push_to_nav(Qform* qf); void qform_push_to_nav(Qform* qf);
void qform_set_title(Qform* qf, char const* title);
bool qform_drive(Qform* qf, int key, Qform_action* out_action); bool qform_drive(Qform* qf, int key, Qform_action* out_action);
extern Qnav_stack qnav_stack; extern Qnav_stack qnav_stack;

1
tui_main.c

@ -1636,6 +1636,7 @@ void push_save_as_form(void) {
Qform* qf = qform_create(Save_as_form_id); Qform* qf = qform_create(Save_as_form_id);
qform_add_text_line(qf, 0, "file name"); qform_add_text_line(qf, 0, "file name");
qform_push_to_nav(qf); qform_push_to_nav(qf);
qform_set_title(qf, "Save As");
} }
// //

Loading…
Cancel
Save