ui/ncurses: Exit safe mode on configuration change
authorSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Fri, 29 Aug 2014 04:03:17 +0000 (14:03 +1000)
committerJeremy Kerr <jk@ozlabs.org>
Thu, 4 Sep 2014 05:58:04 +0000 (13:58 +0800)
Selecting 'OK' in the configuration or language select screen will send
a configuration change to the server and exit safe mode.
Exit safe mode explicity and warn the user that they are about to exit
it.

Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
po/en.po
ui/ncurses/nc-config.c
ui/ncurses/nc-lang.c

index 691722d9503aa98cd7f3efa6b92f43b2fc20fd5e..2573845dd9b549190e90eecb6953a54dbed3ca6c 100644 (file)
--- a/po/en.po
+++ b/po/en.po
@@ -6,7 +6,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: petitboot 20140623-g89bd2ed2-dirty\n"
 "Report-Msgid-Bugs-To: Geoff Levand <geoff@infradead.org>\n"
 msgstr ""
 "Project-Id-Version: petitboot 20140623-g89bd2ed2-dirty\n"
 "Report-Msgid-Bugs-To: Geoff Levand <geoff@infradead.org>\n"
-"POT-Creation-Date: 2014-08-29 13:24+1000\n"
+"POT-Creation-Date: 2014-08-29 13:42+1000\n"
 "PO-Revision-Date: 2014-06-24 13:56+0800\n"
 "Last-Translator: Jeremy Kerr <jk@ozlabs.org>\n"
 "Language-Team: English\n"
 "PO-Revision-Date: 2014-06-24 13:56+0800\n"
 "Last-Translator: Jeremy Kerr <jk@ozlabs.org>\n"
 "Language-Team: English\n"
@@ -200,6 +200,9 @@ msgstr "(eg. 192.168.0.2)"
 msgid "(if not provided by DHCP server)"
 msgstr "(if not provided by DHCP server)"
 
 msgid "(if not provided by DHCP server)"
 msgstr "(if not provided by DHCP server)"
 
+msgid "Selecting 'OK' will exit safe mode"
+msgstr "Selecting 'OK' will exit safe mode"
+
 msgid "Petitboot System Configuration"
 msgstr "Petitboot System Configuration"
 
 msgid "Petitboot System Configuration"
 msgstr "Petitboot System Configuration"
 
index a09535371c7131d1f09e19457ecfee2fb2cbef77..7a709ab1a3e3cf69914e65a717775fdb2f6354cc 100644 (file)
@@ -33,7 +33,7 @@
 #include "nc-config.h"
 #include "nc-widgets.h"
 
 #include "nc-config.h"
 #include "nc-widgets.h"
 
-#define N_FIELDS       25
+#define N_FIELDS       26
 
 extern struct help_text config_help_text;
 
 
 extern struct help_text config_help_text;
 
@@ -94,6 +94,7 @@ struct config_screen {
                struct nc_widget_label          *dns_dhcp_help_l;
                struct nc_widget_label          *dns_help_l;
 
                struct nc_widget_label          *dns_dhcp_help_l;
                struct nc_widget_label          *dns_help_l;
 
+               struct nc_widget_label          *safe_mode;
                struct nc_widget_button         *ok_b;
                struct nc_widget_button         *help_b;
                struct nc_widget_button         *cancel_b;
                struct nc_widget_button         *ok_b;
                struct nc_widget_button         *help_b;
                struct nc_widget_button         *cancel_b;
@@ -307,6 +308,7 @@ static int screen_process_form(struct config_screen *screen)
                }
        }
 
                }
        }
 
+       config->safe_mode = false;
        rc = cui_send_config(screen->cui, config);
        talloc_free(config);
 
        rc = cui_send_config(screen->cui, config);
        talloc_free(config);
 
@@ -470,6 +472,13 @@ static void config_screen_layout_widgets(struct config_screen *screen)
 
        y += 1;
 
 
        y += 1;
 
+       show = screen->cui->config->safe_mode;
+       if (show) {
+               widget_move(widget_label_base(screen->widgets.safe_mode),
+                       y, screen->field_x);
+               y += 1;
+       }
+
        widget_move(widget_button_base(screen->widgets.ok_b),
                        y, screen->field_x);
        widget_move(widget_button_base(screen->widgets.help_b),
        widget_move(widget_button_base(screen->widgets.ok_b),
                        y, screen->field_x);
        widget_move(widget_button_base(screen->widgets.help_b),
@@ -730,6 +739,10 @@ static void config_screen_setup_widgets(struct config_screen *screen,
        screen->widgets.dns_dhcp_help_l = widget_new_label(set, 0, 0,
                        _("(if not provided by DHCP server)"));
 
        screen->widgets.dns_dhcp_help_l = widget_new_label(set, 0, 0,
                        _("(if not provided by DHCP server)"));
 
+       if (config->safe_mode)
+               screen->widgets.safe_mode = widget_new_label(set, 0, 0,
+                        _("Selecting 'OK' will exit safe mode"));
+
        screen->widgets.ok_b = widget_new_button(set, 0, 0, 6, _("OK"),
                        ok_click, screen);
        screen->widgets.help_b = widget_new_button(set, 0, 0, 6, _("Help"),
        screen->widgets.ok_b = widget_new_button(set, 0, 0, 6, _("OK"),
                        ok_click, screen);
        screen->widgets.help_b = widget_new_button(set, 0, 0, 6, _("Help"),
index 35f54e628456ce2a98af61947dc27addf92d5be7..5e927072c42d57bbb71e4909e6b2582e70277fc9 100644 (file)
@@ -32,7 +32,7 @@
 #include "nc-lang.h"
 #include "nc-widgets.h"
 
 #include "nc-lang.h"
 #include "nc-widgets.h"
 
-#define N_FIELDS       4
+#define N_FIELDS       5
 
 static struct lang {
        const char      *name;
 
 static struct lang {
        const char      *name;
@@ -59,6 +59,7 @@ struct lang_screen {
                struct nc_widget_select         *lang_f;
                struct nc_widget_label          *lang_l;
 
                struct nc_widget_select         *lang_f;
                struct nc_widget_label          *lang_l;
 
+               struct nc_widget_label          *safe_mode;
                struct nc_widget_button         *ok_b;
                struct nc_widget_button         *cancel_b;
        } widgets;
                struct nc_widget_button         *ok_b;
                struct nc_widget_button         *cancel_b;
        } widgets;
@@ -160,6 +161,7 @@ static int lang_process_form(struct lang_screen *screen)
 
        config->lang = talloc_strdup(screen, lang->name);
 
 
        config->lang = talloc_strdup(screen, lang->name);
 
+       config->safe_mode = false;
        rc = cui_send_config(screen->cui, config);
        talloc_free(config);
 
        rc = cui_send_config(screen->cui, config);
        talloc_free(config);
 
@@ -209,6 +211,12 @@ static void lang_screen_layout_widgets(struct lang_screen *screen)
 
        y += 1;
 
 
        y += 1;
 
+       if (screen->cui->config->safe_mode) {
+               widget_move(widget_label_base(screen->widgets.safe_mode),
+                       y, screen->field_x);
+               y += 1;
+       }
+
        widget_move(widget_button_base(screen->widgets.ok_b),
                        y, screen->field_x);
        widget_move(widget_button_base(screen->widgets.cancel_b),
        widget_move(widget_button_base(screen->widgets.ok_b),
                        y, screen->field_x);
        widget_move(widget_button_base(screen->widgets.cancel_b),
@@ -265,6 +273,10 @@ static void lang_screen_setup_widgets(struct lang_screen *screen,
                                        label, true);
        }
 
                                        label, true);
        }
 
+       if (config->safe_mode)
+               screen->widgets.safe_mode = widget_new_label(set, 0, 0,
+                        _("Selecting 'OK' will exit safe mode"));
+
        screen->widgets.ok_b = widget_new_button(set, 0, 0, 6, _("OK"),
                        ok_click, screen);
        screen->widgets.cancel_b = widget_new_button(set, 0, 0, 6, _("Cancel"),
        screen->widgets.ok_b = widget_new_button(set, 0, 0, 6, _("OK"),
                        ok_click, screen);
        screen->widgets.cancel_b = widget_new_button(set, 0, 0, 6, _("Cancel"),