gui: use basic grid in the network panel

Using boxes causes the labels to not align correctly in certain
circumstances. In the following commits we replace the use of boxes with
grids and set the margins and spacing directly on the respective grid.

Signed-off-by: Maximiliano Sandoval <m.sandoval@proxmox.com>
Reviewed-by: Christoph Heiss <c.heiss@proxmox.com>
Tested-by: Christoph Heiss <c.heiss@proxmox.com>
Tested-by: Tested-by: Lukas Wagner <l.wagner@proxmox.com>
This commit is contained in:
Maximiliano Sandoval 2023-11-21 16:10:24 +01:00 committed by Thomas Lamprecht
parent 0cc6d5ff4f
commit 9102da7989

View File

@ -281,18 +281,14 @@ sub check_number {
sub create_text_input {
my ($default, $text) = @_;
my $hbox = Gtk3::Box->new('horizontal', 0);
my $label = Gtk3::Label->new($text);
$label->set_size_request(150, -1);
$label->set_xalign(1.0);
$hbox->pack_start($label, 0, 0, 10);
my $e1 = Gtk3::Entry->new();
$e1->set_width_chars(35);
$hbox->pack_start($e1, 0, 0, 0);
$e1->set_text($default);
return ($hbox, $e1);
return ($label, $e1);
}
sub create_cidr_inputs {
my ($cidr) = @_;
@ -304,23 +300,22 @@ sub create_cidr_inputs {
my $label = Gtk3::Label->new('IP Address (CIDR)');
$label->set_size_request(150, -1);
$label->set_xalign(1.0);
$hbox->pack_start($label, 0, 0, 10);
my $ip_el = Gtk3::Entry->new();
$ip_el->set_width_chars(28);
$hbox->pack_start($ip_el, 0, 0, 0);
$ip_el->set_text($default_ip);
$label = Gtk3::Label->new('/');
$label->set_size_request(10, -1);
$hbox->pack_start($label, 0, 0, 2);
my $dash_label = Gtk3::Label->new('/');
$dash_label->set_size_request(10, -1);
$hbox->pack_start($dash_label, 0, 0, 2);
my $cidr_el = Gtk3::Entry->new();
$cidr_el->set_width_chars(3);
$hbox->pack_start($cidr_el, 0, 0, 0);
$cidr_el->set_text($default_mask);
return ($hbox, $ip_el, $cidr_el);
return ($label, $hbox, $ip_el, $cidr_el);
}
my $ipconf_first_view = 1;
@ -345,16 +340,15 @@ sub create_ipconf_view {
cleanup_view();
Proxmox::UI::display_html('ipconf.htm');
my $vcontainer = Gtk3::Box->new('vertical', 0);
$gtk_state->{inbox}->pack_start($vcontainer, 1, 0, 0);
my $hcontainer = Gtk3::Box->new('horizontal', 0);
$vcontainer->pack_start($hcontainer, 0, 0, 10);
my $vbox = Gtk3::Box->new('vertical', 0);
$hcontainer->add($vbox);
my $grid = &$create_basic_grid();
$grid->set_row_spacing(10);
$grid->set_column_spacing(10);
$gtk_state->{inbox}->pack_start($grid, 0, 0, 0);
my $cidr = Proxmox::Install::Config::get_cidr() // '192.168.100.2/24';
my ($cidr_box, $ipconf_entry_addr, $ipconf_entry_mask) = create_cidr_inputs($cidr);
my ($cidr_label, $cidr_box, $ipconf_entry_addr, $ipconf_entry_mask) = create_cidr_inputs($cidr);
my $device_model = Gtk3::ListStore->new('Glib::String', 'Glib::String');
my $device_cb = Gtk3::ComboBox->new_with_model($device_model);
@ -422,37 +416,39 @@ sub create_ipconf_view {
$device_cb->set_active(0);
}
my $devicebox = Gtk3::Box->new('horizontal', 0);
my $label = Gtk3::Label->new("Management Interface:");
$label->set_size_request(150, -1);
$label->set_xalign(1.0);
$devicebox->pack_start($label, 0, 0, 10);
$devicebox->pack_start($device_cb, 0, 0, 0);
$vbox->pack_start($devicebox, 0, 0, 2);
$grid->attach($label, 0, 0, 1, 1);
$grid->attach($device_cb, 1, 0, 1, 1);
my $fqdn = Proxmox::Install::Config::get_fqdn();
my $hostname = $run_env->{network}->{hostname} || $iso_env->{product};
my $domain = $ipconf->{domain} || "example.invalid";
$fqdn //= "$hostname.$domain";
my ($hostbox, $hostentry) = create_text_input($fqdn, 'Hostname (FQDN):');
$vbox->pack_start($hostbox, 0, 0, 2);
my ($host_label, $hostentry) = create_text_input($fqdn, 'Hostname (FQDN):');
$grid->attach($host_label, 0, 1, 1, 1);
$grid->attach($hostentry, 1, 1, 1, 1);
$vbox->pack_start($cidr_box, 0, 0, 2);
$grid->attach($cidr_label, 0, 2, 1, 1);
$grid->attach($cidr_box, 1, 2, 1, 1);
my $cfg_gateway = Proxmox::Install::Config::get_gateway();
my $gateway = $cfg_gateway // $ipconf->{gateway} || '192.168.100.1';
my ($gwbox, $ipconf_entry_gw) = create_text_input($gateway, 'Gateway:');
$vbox->pack_start($gwbox, 0, 0, 2);
my ($gw_label, $ipconf_entry_gw) = create_text_input($gateway, 'Gateway:');
$grid->attach($gw_label, 0, 3, 1, 1);
$grid->attach($ipconf_entry_gw, 1, 3, 1, 1);
my $cfg_dns = Proxmox::Install::Config::get_dns();
my $dnsserver = $cfg_dns // $ipconf->{dnsserver} || $gateway;
my ($dnsbox, $ipconf_entry_dns) = create_text_input($dnsserver, 'DNS Server:');
my ($dns_label, $ipconf_entry_dns) = create_text_input($dnsserver, 'DNS Server:');
$vbox->pack_start($dnsbox, 0, 0, 0);
$grid->attach($dns_label, 0, 4, 1, 1);
$grid->attach($ipconf_entry_dns, 1, 4, 1, 1);
$gtk_state->{inbox}->show_all;
set_next(undef, sub {