|
@@ -280,6 +280,7 @@ static struct menu *current_menu;
|
|
|
static int child_count;
|
|
|
static int single_menu_mode;
|
|
|
static int show_all_options;
|
|
|
+static int save_and_exit;
|
|
|
|
|
|
static void conf(struct menu *menu, struct menu *active_menu);
|
|
|
static void conf_choice(struct menu *menu);
|
|
@@ -657,6 +658,12 @@ static void conf(struct menu *menu, struct menu *active_menu)
|
|
|
show_helptext(_("README"), _(mconf_readme));
|
|
|
break;
|
|
|
case 3:
|
|
|
+ conf_save();
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ conf_load();
|
|
|
+ break;
|
|
|
+ case 5:
|
|
|
if (item_is_tag('t')) {
|
|
|
if (sym_set_tristate_value(sym, yes))
|
|
|
break;
|
|
@@ -664,24 +671,24 @@ static void conf(struct menu *menu, struct menu *active_menu)
|
|
|
show_textbox(NULL, setmod_text, 6, 74);
|
|
|
}
|
|
|
break;
|
|
|
- case 4:
|
|
|
+ case 6:
|
|
|
if (item_is_tag('t'))
|
|
|
sym_set_tristate_value(sym, no);
|
|
|
break;
|
|
|
- case 5:
|
|
|
+ case 7:
|
|
|
if (item_is_tag('t'))
|
|
|
sym_set_tristate_value(sym, mod);
|
|
|
break;
|
|
|
- case 6:
|
|
|
+ case 8:
|
|
|
if (item_is_tag('t'))
|
|
|
sym_toggle_tristate_value(sym);
|
|
|
else if (item_is_tag('m'))
|
|
|
conf(submenu, NULL);
|
|
|
break;
|
|
|
- case 7:
|
|
|
+ case 9:
|
|
|
search_conf();
|
|
|
break;
|
|
|
- case 8:
|
|
|
+ case 10:
|
|
|
show_all_options = !show_all_options;
|
|
|
break;
|
|
|
}
|
|
@@ -708,6 +715,17 @@ static void show_helptext(const char *title, const char *text)
|
|
|
show_textbox(title, text, 0, 0);
|
|
|
}
|
|
|
|
|
|
+static void conf_message_callback(const char *fmt, va_list ap)
|
|
|
+{
|
|
|
+ char buf[PATH_MAX+1];
|
|
|
+
|
|
|
+ vsnprintf(buf, sizeof(buf), fmt, ap);
|
|
|
+ if (save_and_exit)
|
|
|
+ printf("%s", buf);
|
|
|
+ else
|
|
|
+ show_textbox(NULL, buf, 6, 60);
|
|
|
+}
|
|
|
+
|
|
|
static void show_help(struct menu *menu)
|
|
|
{
|
|
|
struct gstr help = str_new();
|
|
@@ -876,6 +894,7 @@ static int handle_exit(void)
|
|
|
{
|
|
|
int res;
|
|
|
|
|
|
+ save_and_exit = 1;
|
|
|
dialog_clear();
|
|
|
if (conf_get_changed())
|
|
|
res = dialog_yesno(NULL,
|
|
@@ -947,6 +966,7 @@ int main(int ac, char **av)
|
|
|
}
|
|
|
|
|
|
set_config_filename(conf_get_configname());
|
|
|
+ conf_set_message_callback(conf_message_callback);
|
|
|
do {
|
|
|
conf(&rootmenu, NULL);
|
|
|
res = handle_exit();
|