From 9102da7989ec11a64bd57a24b92454194ad7a2c8 Mon Sep 17 00:00:00 2001 From: Maximiliano Sandoval Date: Tue, 21 Nov 2023 16:10:24 +0100 Subject: [PATCH] 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 Reviewed-by: Christoph Heiss Tested-by: Christoph Heiss Tested-by: Tested-by: Lukas Wagner --- proxinstall | 52 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/proxinstall b/proxinstall index 1796185..24aee14 100755 --- a/proxinstall +++ b/proxinstall @@ -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 {