From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id BDA4C9B8CA for ; Thu, 19 Oct 2023 10:35:34 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A07D81741D for ; Thu, 19 Oct 2023 10:35:34 +0200 (CEST) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Thu, 19 Oct 2023 10:35:33 +0200 (CEST) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id D1D8142EE2 for ; Thu, 19 Oct 2023 10:35:32 +0200 (CEST) From: Maximiliano Sandoval R To: pve-devel@lists.proxmox.com Date: Thu, 19 Oct 2023 10:35:31 +0200 Message-Id: <20231019083531.28056-1-m.sandoval@proxmox.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.003 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH installer v3] fix #4869: Show state in management interface ComboBox X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Oct 2023 08:35:34 -0000 From: Maximiliano Sandoval This is a continuation of https://lists.proxmox.com/pipermail/pve-devel/2023-August/058639.html. Signed-off-by: Maximiliano Sandoval R --- v3 was tested only with `make check-pve`. v2 was properly tested by Filip Schauer in a VM. Differences from v2: - Use a escaped utf8 character instead of using `use uft-8;` Differences from v1: - Instead of adding a `- UP` or `- DOWN` to the interface label, we display a green BLACK CIRCLE ● similar to what systemd does. To achieve this we separate the GtkWidget in the dropdown in two, and set the color of the new one to green. It was discussed off-list that adding a character for interfaces that were down introduced too much visual noise. proxinstall | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/proxinstall b/proxinstall index d5b2565..11e537b 100755 --- a/proxinstall +++ b/proxinstall @@ -341,10 +341,20 @@ sub create_ipconf_view { my ($cidr_box, $ipconf_entry_addr, $ipconf_entry_mask) = create_cidr_inputs($cidr); - my $device_cb = Gtk3::ComboBoxText->new(); + my $device_model = Gtk3::ListStore->new('Glib::String', 'Glib::String'); + my $device_cb = Gtk3::ComboBox->new_with_model($device_model); $device_cb->set_active(0); $device_cb->set_visible(1); + my $icon_cell = Gtk3::CellRendererText->new(); + $device_cb->pack_start($icon_cell, 0); + $device_cb->add_attribute($icon_cell, 'text', 0); + $icon_cell->set_property('foreground', 'green'); + + my $cell = Gtk3::CellRendererText->new(); + $device_cb->pack_start($cell, 0); + $device_cb->add_attribute($cell, 'text', 1); + my $get_device_desc = sub { my $iface = shift; return "$iface->{name} - $iface->{mac} ($iface->{driver})"; @@ -374,7 +384,12 @@ sub create_ipconf_view { my $i = 0; for my $index (sort keys $ipconf->{ifaces}->%*) { my $iface = $ipconf->{ifaces}->{$index}; - $device_cb->append_text($get_device_desc->($iface)); + my $iter = $device_model->append(); + my $symbol = "$iface->{state}" eq "UP" ? "\x{25CF}" : ' '; + $device_model->set($iter, + 0 => $symbol, + 1 => $get_device_desc->($iface), + ); $device_active_map->{$i} = $index; $device_active_reverse_map->{$iface->{name}} = $i; if ($ipconf_first_view && $index == $ipconf->{default}) { -- 2.39.2