Add 'Active' column to DataTable with visual indicators for entry status

This commit is contained in:
Philip Henning 2025-07-29 17:13:22 +02:00
parent e83db8ce67
commit a399b04c99

View file

@ -162,6 +162,7 @@ class HostsManagerApp(App):
table.show_header = True table.show_header = True
# Create column labels with sort indicators # Create column labels with sort indicators
active_label = "Active"
ip_label = "IP Address" ip_label = "IP Address"
hostname_label = "Canonical Hostname" hostname_label = "Canonical Hostname"
@ -173,8 +174,8 @@ class HostsManagerApp(App):
arrow = "" if self.sort_ascending else "" arrow = "" if self.sort_ascending else ""
hostname_label = f"{arrow} Canonical Hostname" hostname_label = f"{arrow} Canonical Hostname"
# Add columns with proper labels # Add columns with proper labels (Active column first)
table.add_columns(ip_label, hostname_label) table.add_columns(active_label, ip_label, hostname_label)
# Add rows # Add rows
for entry in self.hosts_file.entries: for entry in self.hosts_file.entries:
@ -183,15 +184,17 @@ class HostsManagerApp(App):
# Add row with styling based on active status # Add row with styling based on active status
if entry.is_active: if entry.is_active:
# Active entries in green # Active entries in green with checkmark
active_text = Text("", style="bold green")
ip_text = Text(entry.ip_address, style="bold green") ip_text = Text(entry.ip_address, style="bold green")
hostname_text = Text(canonical_hostname, style="bold green") hostname_text = Text(canonical_hostname, style="bold green")
table.add_row(ip_text, hostname_text) table.add_row(active_text, ip_text, hostname_text)
else: else:
# Inactive entries in dim yellow with italic (no # prefix in IP column) # Inactive entries in dim yellow with italic (no checkmark)
active_text = Text("", style="dim yellow italic")
ip_text = Text(entry.ip_address, style="dim yellow italic") ip_text = Text(entry.ip_address, style="dim yellow italic")
hostname_text = Text(canonical_hostname, style="dim yellow italic") hostname_text = Text(canonical_hostname, style="dim yellow italic")
table.add_row(ip_text, hostname_text) table.add_row(active_text, ip_text, hostname_text)
def restore_cursor_position(self, previous_entry) -> None: def restore_cursor_position(self, previous_entry) -> None:
"""Restore cursor position after reload, maintaining selection if possible.""" """Restore cursor position after reload, maintaining selection if possible."""