]> git.ozlabs.org Git - petitboot/commitdiff
ui/ncurses: Change arrangement of boot order buttons
authorSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Fri, 4 Sep 2015 05:52:20 +0000 (15:52 +1000)
committerSamuel Mendoza-Jonas <sam.mj@au1.ibm.com>
Mon, 7 Sep 2015 06:55:50 +0000 (16:55 +1000)
The buttons 'Add Device', 'Clear', and 'Clear & Boot Any' are short
enough to be positioned horizontally, but several localisations have
strings as long as all three buttons combined.

Instead arrange the buttons vertically and allow longer strings to
resize the width of the button to fit the whole string.

Signed-off-by: Samuel Mendoza-Jonas <sam.mj@au1.ibm.com>
ui/ncurses/nc-config.c

index aba3f99a84390932faebcf195736a5c0af499480..b257076d03b2f50be229b2a51a718abe8a8822e7 100644 (file)
@@ -418,11 +418,11 @@ static void config_screen_layout_widgets(struct config_screen *screen)
        y += 1;
 
        widget_move(widget_button_base(screen->widgets.boot_add_b),
        y += 1;
 
        widget_move(widget_button_base(screen->widgets.boot_add_b),
-                       y, screen->field_x);
+                       y++, screen->field_x);
        widget_move(widget_button_base(screen->widgets.boot_any_b),
        widget_move(widget_button_base(screen->widgets.boot_any_b),
-                       y, screen->field_x + 14);
+                       y++, screen->field_x);
        widget_move(widget_button_base(screen->widgets.boot_none_b),
        widget_move(widget_button_base(screen->widgets.boot_none_b),
-                       y, screen->field_x + 34);
+                       y, screen->field_x);
 
        wf = widget_button_base(screen->widgets.boot_add_b);
        if (widget_subset_n_inactive(screen->widgets.boot_order_f))
 
        wf = widget_button_base(screen->widgets.boot_add_b);
        if (widget_subset_n_inactive(screen->widgets.boot_order_f))
@@ -710,6 +710,7 @@ static void config_screen_setup_widgets(struct config_screen *screen,
        char *str, *ip, *mask, *gw;
        enum net_conf_type type;
        unsigned int i;
        char *str, *ip, *mask, *gw;
        enum net_conf_type type;
        unsigned int i;
+       int add_len, clear_len, any_len, min_len = 20;
 
        build_assert(sizeof(screen->widgets) / sizeof(struct widget *)
                        == N_FIELDS);
 
        build_assert(sizeof(screen->widgets) / sizeof(struct widget *)
                        == N_FIELDS);
@@ -717,15 +718,19 @@ static void config_screen_setup_widgets(struct config_screen *screen,
        type = screen->net_conf_type;
        ifcfg = first_active_interface(config);
 
        type = screen->net_conf_type;
        ifcfg = first_active_interface(config);
 
-       screen->widgets.boot_add_b = widget_new_button(set, 0, 0, 10,
+       add_len = max(min_len, strncols(_("Add Device")));
+       clear_len = max(min_len, strncols(_("Clear")));
+       any_len = max(min_len, strncols(_("Clear & Boot Any")));
+
+       screen->widgets.boot_add_b = widget_new_button(set, 0, 0, add_len,
                                        _("Add Device"),
                                        config_screen_add_device, screen);
 
                                        _("Add Device"),
                                        config_screen_add_device, screen);
 
-       screen->widgets.boot_none_b = widget_new_button(set, 0, 0, 10,
+       screen->widgets.boot_none_b = widget_new_button(set, 0, 0, clear_len,
                                        _("Clear"),
                                        config_screen_autoboot_none, screen);
 
                                        _("Clear"),
                                        config_screen_autoboot_none, screen);
 
-       screen->widgets.boot_any_b = widget_new_button(set, 0, 0, 16,
+       screen->widgets.boot_any_b = widget_new_button(set, 0, 0, any_len,
                                        _("Clear & Boot Any"),
                                        config_screen_autoboot_any, screen);
 
                                        _("Clear & Boot Any"),
                                        config_screen_autoboot_any, screen);