Refactor HostsManagerApp and keybindings: update footer item arrangement for better usability and modify key bindings to hide unused keys for a cleaner interface.

This commit is contained in:
Philip Henning 2025-08-16 21:23:30 +02:00
parent e8faa48e22
commit c941a4ba24
2 changed files with 16 additions and 20 deletions

View file

@ -53,7 +53,6 @@ class HostsManagerApp(App):
def __init__(self):
super().__init__()
self.title = "/etc/hosts Manager"
self.sub_title = "" # Will be set by update_status
# Initialize core components
self.parser = HostsParser()
@ -143,14 +142,16 @@ class HostsManagerApp(App):
footer = self.query_one("#custom-footer", CustomFooter)
# Left section - common actions
footer.add_left_item("q: Quit")
footer.add_left_item("r: Reload")
footer.add_left_item("?: Help")
footer.add_right_item("^e: Edit Mode")
footer.add_right_item("c: Config")
footer.add_right_item("?: Help")
footer.add_right_item("q: Quit")
# Right section - sort and edit actions
footer.add_right_item("i: Sort IP")
footer.add_right_item("n: Sort Host")
footer.add_right_item("Ctrl+E: Edit Mode")
footer.add_left_item("i: Sort IP")
footer.add_left_item("n: Sort Host")
footer.add_left_item("r: Reload")
# Status section will be updated by update_status
self._update_footer_status()
@ -194,9 +195,7 @@ class HostsManagerApp(App):
active_count = len(self.hosts_file.get_active_entries())
# Format: "29 entries (6 active) | Read-only mode"
self.sub_title = f"{entry_count} entries ({active_count} active) | {mode}"
# Also update the footer status
# Update the footer status
self._update_footer_status()
def _clear_status_message(self) -> None:
@ -325,7 +324,6 @@ class HostsManagerApp(App):
success, message = self.manager.exit_edit_mode()
if success:
self.edit_mode = False
self.sub_title = "Read-only mode"
self.update_status(message)
else:
self.update_status(f"Error exiting edit mode: {message}")
@ -334,7 +332,6 @@ class HostsManagerApp(App):
success, message = self.manager.enter_edit_mode()
if success:
self.edit_mode = True
self.sub_title = "Edit mode"
self.update_status(message)
elif "Password required" in message:
# Show password modal
@ -355,7 +352,6 @@ class HostsManagerApp(App):
success, message = self.manager.enter_edit_mode(password)
if success:
self.edit_mode = True
self.sub_title = "Edit mode"
self.update_status(message)
elif "Incorrect password" in message:
# Show error and try again

View file

@ -9,13 +9,13 @@ from textual.binding import Binding
# Key bindings for the hosts manager application
HOSTS_MANAGER_BINDINGS = [
Binding("q", "quit", "Quit"),
Binding("r", "reload", "Reload hosts file"),
Binding("question_mark", "help", "Show help", True, key_display="?"),
Binding("i", "sort_by_ip", "Sort by IP address"),
Binding("n", "sort_by_hostname", "Sort by hostname"),
Binding("c", "config", "Configuration"),
Binding("ctrl+e", "toggle_edit_mode", "Toggle edit mode"),
Binding("q", "quit", "Quit", show=False),
Binding("r", "reload", "Reload hosts file", show=False),
Binding("question_mark", "help", "Show help", True, key_display="?", show=False),
Binding("i", "sort_by_ip", "Sort by IP address", show=False),
Binding("n", "sort_by_hostname", "Sort by hostname", show=False),
Binding("c", "config", "Configuration", show=False),
Binding("ctrl+e", "toggle_edit_mode", "Toggle edit mode", show=False),
Binding("a", "add_entry", "Add new entry", show=False),
Binding("d", "delete_entry", "Delete entry", show=False),
Binding("e", "edit_entry", "Edit entry", show=False),