From: Maximiliano Sandoval <m.sando...@proxmox.com>

This is a continuation of
https://lists.proxmox.com/pipermail/pve-devel/2023-August/058639.html.

Signed-off-by: Maximiliano Sandoval R <m.sando...@proxmox.com>
---
v3 was tested only with `make check-pve`. v2 was properly tested by Filip
Schauer <f.scha...@proxmox.com> 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



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to