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:
		
							parent
							
								
									e8faa48e22
								
							
						
					
					
						commit
						c941a4ba24
					
				
					 2 changed files with 16 additions and 20 deletions
				
			
		| 
						 | 
					@ -53,7 +53,6 @@ class HostsManagerApp(App):
 | 
				
			||||||
    def __init__(self):
 | 
					    def __init__(self):
 | 
				
			||||||
        super().__init__()
 | 
					        super().__init__()
 | 
				
			||||||
        self.title = "/etc/hosts Manager"
 | 
					        self.title = "/etc/hosts Manager"
 | 
				
			||||||
        self.sub_title = ""  # Will be set by update_status
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Initialize core components
 | 
					        # Initialize core components
 | 
				
			||||||
        self.parser = HostsParser()
 | 
					        self.parser = HostsParser()
 | 
				
			||||||
| 
						 | 
					@ -143,14 +142,16 @@ class HostsManagerApp(App):
 | 
				
			||||||
            footer = self.query_one("#custom-footer", CustomFooter)
 | 
					            footer = self.query_one("#custom-footer", CustomFooter)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Left section - common actions
 | 
					            # Left section - common actions
 | 
				
			||||||
            footer.add_left_item("q: Quit")
 | 
					            footer.add_right_item("^e: Edit Mode")
 | 
				
			||||||
            footer.add_left_item("r: Reload")
 | 
					            footer.add_right_item("c: Config")
 | 
				
			||||||
            footer.add_left_item("?: Help")
 | 
					            footer.add_right_item("?: Help")
 | 
				
			||||||
 | 
					            footer.add_right_item("q: Quit")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Right section - sort and edit actions
 | 
					            # Right section - sort and edit actions
 | 
				
			||||||
            footer.add_right_item("i: Sort IP")
 | 
					            footer.add_left_item("i: Sort IP")
 | 
				
			||||||
            footer.add_right_item("n: Sort Host")
 | 
					            footer.add_left_item("n: Sort Host")
 | 
				
			||||||
            footer.add_right_item("Ctrl+E: Edit Mode")
 | 
					            footer.add_left_item("r: Reload")
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            # Status section will be updated by update_status
 | 
					            # Status section will be updated by update_status
 | 
				
			||||||
            self._update_footer_status()
 | 
					            self._update_footer_status()
 | 
				
			||||||
| 
						 | 
					@ -194,9 +195,7 @@ class HostsManagerApp(App):
 | 
				
			||||||
        active_count = len(self.hosts_file.get_active_entries())
 | 
					        active_count = len(self.hosts_file.get_active_entries())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        # Format: "29 entries (6 active) | Read-only mode"
 | 
					        # Format: "29 entries (6 active) | Read-only mode"
 | 
				
			||||||
        self.sub_title = f"{entry_count} entries ({active_count} active) | {mode}"
 | 
					        # Update the footer status
 | 
				
			||||||
 | 
					 | 
				
			||||||
        # Also update the footer status
 | 
					 | 
				
			||||||
        self._update_footer_status()
 | 
					        self._update_footer_status()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def _clear_status_message(self) -> None:
 | 
					    def _clear_status_message(self) -> None:
 | 
				
			||||||
| 
						 | 
					@ -325,7 +324,6 @@ class HostsManagerApp(App):
 | 
				
			||||||
            success, message = self.manager.exit_edit_mode()
 | 
					            success, message = self.manager.exit_edit_mode()
 | 
				
			||||||
            if success:
 | 
					            if success:
 | 
				
			||||||
                self.edit_mode = False
 | 
					                self.edit_mode = False
 | 
				
			||||||
                self.sub_title = "Read-only mode"
 | 
					 | 
				
			||||||
                self.update_status(message)
 | 
					                self.update_status(message)
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                self.update_status(f"Error exiting edit mode: {message}")
 | 
					                self.update_status(f"Error exiting edit mode: {message}")
 | 
				
			||||||
| 
						 | 
					@ -334,7 +332,6 @@ class HostsManagerApp(App):
 | 
				
			||||||
            success, message = self.manager.enter_edit_mode()
 | 
					            success, message = self.manager.enter_edit_mode()
 | 
				
			||||||
            if success:
 | 
					            if success:
 | 
				
			||||||
                self.edit_mode = True
 | 
					                self.edit_mode = True
 | 
				
			||||||
                self.sub_title = "Edit mode"
 | 
					 | 
				
			||||||
                self.update_status(message)
 | 
					                self.update_status(message)
 | 
				
			||||||
            elif "Password required" in message:
 | 
					            elif "Password required" in message:
 | 
				
			||||||
                # Show password modal
 | 
					                # Show password modal
 | 
				
			||||||
| 
						 | 
					@ -355,7 +352,6 @@ class HostsManagerApp(App):
 | 
				
			||||||
            success, message = self.manager.enter_edit_mode(password)
 | 
					            success, message = self.manager.enter_edit_mode(password)
 | 
				
			||||||
            if success:
 | 
					            if success:
 | 
				
			||||||
                self.edit_mode = True
 | 
					                self.edit_mode = True
 | 
				
			||||||
                self.sub_title = "Edit mode"
 | 
					 | 
				
			||||||
                self.update_status(message)
 | 
					                self.update_status(message)
 | 
				
			||||||
            elif "Incorrect password" in message:
 | 
					            elif "Incorrect password" in message:
 | 
				
			||||||
                # Show error and try again
 | 
					                # Show error and try again
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -9,13 +9,13 @@ from textual.binding import Binding
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Key bindings for the hosts manager application
 | 
					# Key bindings for the hosts manager application
 | 
				
			||||||
HOSTS_MANAGER_BINDINGS = [
 | 
					HOSTS_MANAGER_BINDINGS = [
 | 
				
			||||||
    Binding("q", "quit", "Quit"),
 | 
					    Binding("q", "quit", "Quit", show=False),
 | 
				
			||||||
    Binding("r", "reload", "Reload hosts file"),
 | 
					    Binding("r", "reload", "Reload hosts file", show=False),
 | 
				
			||||||
    Binding("question_mark", "help", "Show help", True, key_display="?"),
 | 
					    Binding("question_mark", "help", "Show help", True, key_display="?", show=False),
 | 
				
			||||||
    Binding("i", "sort_by_ip", "Sort by IP address"),
 | 
					    Binding("i", "sort_by_ip", "Sort by IP address", show=False),
 | 
				
			||||||
    Binding("n", "sort_by_hostname", "Sort by hostname"),
 | 
					    Binding("n", "sort_by_hostname", "Sort by hostname", show=False),
 | 
				
			||||||
    Binding("c", "config", "Configuration"),
 | 
					    Binding("c", "config", "Configuration", show=False),
 | 
				
			||||||
    Binding("ctrl+e", "toggle_edit_mode", "Toggle edit mode"),
 | 
					    Binding("ctrl+e", "toggle_edit_mode", "Toggle edit mode", show=False),
 | 
				
			||||||
    Binding("a", "add_entry", "Add new entry", show=False),
 | 
					    Binding("a", "add_entry", "Add new entry", show=False),
 | 
				
			||||||
    Binding("d", "delete_entry", "Delete entry", show=False),
 | 
					    Binding("d", "delete_entry", "Delete entry", show=False),
 | 
				
			||||||
    Binding("e", "edit_entry", "Edit entry", show=False),
 | 
					    Binding("e", "edit_entry", "Edit entry", show=False),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue