cui->resize = 1;
}
-/**
- * cui_make_item_name - Format the menu item name srting.
- *
- * Returns a talloc string.
- */
-
-static char *cui_make_item_name(struct pmenu_item *i, struct cui_opt_data *cod)
-{
- char *name;
-
- assert(cod->name);
- assert(cod->bd);
-
- name = talloc_asprintf(i, "%s:", cod->name);
-
- if (cod->bd->image)
- name = talloc_asprintf_append(name, " %s", cod->bd->image);
-
- if (cod->bd->initrd)
- name = talloc_asprintf_append(name, " initrd=%s",
- cod->bd->initrd);
-
- if (cod->bd->args)
- name = talloc_asprintf_append(name, " %s", cod->bd->args);
-
- DBGS("@%s@\n", name);
- return name;
-}
-
/**
* cui_on_exit - A generic main menu ESC callback.
*/
assert(cui->current == &cui->main->scr);
pb_log("%s: %s\n", __func__, cod->name);
+ if (!cod->opt) {
+ pb_log("%s: missing opt?\n", __func__);
+ return -1;
+ }
+
nc_scr_status_printf(cui->current, "Booting %s...", cod->name);
def_prog_mode();
if (boot_editor_result == boot_editor_update) {
struct pmenu_item *i = pmenu_find_selected(cui->main);
struct cui_opt_data *cod = cod_from_item(i);
- char *name;
assert(bd);
talloc_free(cod->bd);
cod->bd = bd;
- name = cui_make_item_name(i, cod);
- pmenu_item_replace(i, name);
+ pmenu_item_replace(i, cod->name);
/* FIXME: need to make item visible somehow */
set_current_item(cui->main->ncm, i->nci);
return old;
}
+static bool process_global_keys(struct cui *cui, int key)
+{
+ switch (key) {
+ case 0xc:
+ if (cui->current && cui->current->main_ncw) {
+ redrawwin(cui->current->main_ncw);
+ wrefresh(cui->current->main_ncw);
+ }
+ return true;
+ }
+ return false;
+}
+
/**
* cui_process_key - Process input on stdin.
*/
assert(cui->current);
ui_timer_disable(&cui->timer);
- cui->current->process_key(cui->current);
+ for (;;) {
+ int c = getch();
+
+ if (c == ERR)
+ break;
+
+ if (process_global_keys(cui, c))
+ continue;
+
+ cui->current->process_key(cui->current, c);
+ }
return 0;
}
unsigned int insert_pt;
struct pmenu_item *i;
ITEM *selected;
- char *name;
int result;
pb_log("%s: %p %s\n", __func__, opt, opt->id);
cod->bd->initrd = talloc_strdup(cod->bd, opt->initrd_file);
cod->bd->args = talloc_strdup(cod->bd, opt->boot_args);
- name = cui_make_item_name(i, cod);
- pmenu_item_setup(cui->main, i, insert_pt, name);
+ pmenu_item_setup(cui->main, i, insert_pt, cod->name);
pb_log("%s: adding opt '%s'\n", __func__, cod->name);
pb_log(" image '%s'\n", cod->bd->image);
atexit(nc_atexit);
nc_start();
- waiter_register(cui->waitset, STDIN_FILENO, WAIT_IN,
+ waiter_register_io(cui->waitset, STDIN_FILENO, WAIT_IN,
cui_process_key, cui);
if (js_map) {
cui->pjs = pjs_init(cui, js_map);
if (cui->pjs)
- waiter_register(cui->waitset, pjs_get_fd(cui->pjs),
+ waiter_register_io(cui->waitset, pjs_get_fd(cui->pjs),
WAIT_IN, cui_process_js, cui);
}