Add auto-save functionality for entry edits and movements; update status messages accordingly
This commit is contained in:
		
							parent
							
								
									0ee720c5ef
								
							
						
					
					
						commit
						02423fe4f2
					
				
					 2 changed files with 43 additions and 27 deletions
				
			
		| 
						 | 
					@ -62,6 +62,7 @@
 | 
				
			||||||
- ✅ **Live testing**: Manual testing confirms all functionality works correctly
 | 
					- ✅ **Live testing**: Manual testing confirms all functionality works correctly
 | 
				
			||||||
- ✅ **Human-readable formatting**: Tab-based column alignment with proper spacing
 | 
					- ✅ **Human-readable formatting**: Tab-based column alignment with proper spacing
 | 
				
			||||||
- ✅ **Management header**: Automatic addition of management header to hosts files
 | 
					- ✅ **Management header**: Automatic addition of management header to hosts files
 | 
				
			||||||
 | 
					- ✅ **Auto-save functionality**: Immediate saving of changes when entries are edited
 | 
				
			||||||
 | 
					
 | 
				
			||||||
### Phase 4: Advanced Edit Features
 | 
					### Phase 4: Advanced Edit Features
 | 
				
			||||||
- ❌ **Add new entries**: Create new host entries
 | 
					- ❌ **Add new entries**: Create new host entries
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -497,11 +497,16 @@ class HostsManagerApp(App):
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        success, message = self.manager.toggle_entry(self.hosts_file, self.selected_entry_index)
 | 
					        success, message = self.manager.toggle_entry(self.hosts_file, self.selected_entry_index)
 | 
				
			||||||
        if success:
 | 
					        if success:
 | 
				
			||||||
            self.populate_entries_table()
 | 
					            # Auto-save the changes immediately
 | 
				
			||||||
            # Restore cursor position to the same entry
 | 
					            save_success, save_message = self.manager.save_hosts_file(self.hosts_file)
 | 
				
			||||||
            self.set_timer(0.1, lambda: self.restore_cursor_position(current_entry))
 | 
					            if save_success:
 | 
				
			||||||
            self.update_entry_details()
 | 
					                self.populate_entries_table()
 | 
				
			||||||
            self.update_status(message)
 | 
					                # Restore cursor position to the same entry
 | 
				
			||||||
 | 
					                self.set_timer(0.1, lambda: self.restore_cursor_position(current_entry))
 | 
				
			||||||
 | 
					                self.update_entry_details()
 | 
				
			||||||
 | 
					                self.update_status(f"{message} - Changes saved automatically")
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                self.update_status(f"Entry toggled but save failed: {save_message}")
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            self.update_status(f"Error toggling entry: {message}")
 | 
					            self.update_status(f"Error toggling entry: {message}")
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -517,17 +522,22 @@ class HostsManagerApp(App):
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        success, message = self.manager.move_entry_up(self.hosts_file, self.selected_entry_index)
 | 
					        success, message = self.manager.move_entry_up(self.hosts_file, self.selected_entry_index)
 | 
				
			||||||
        if success:
 | 
					        if success:
 | 
				
			||||||
            # Update the selection index to follow the moved entry
 | 
					            # Auto-save the changes immediately
 | 
				
			||||||
            if self.selected_entry_index > 0:
 | 
					            save_success, save_message = self.manager.save_hosts_file(self.hosts_file)
 | 
				
			||||||
                self.selected_entry_index -= 1
 | 
					            if save_success:
 | 
				
			||||||
            self.populate_entries_table()
 | 
					                # Update the selection index to follow the moved entry
 | 
				
			||||||
            # Update the DataTable cursor position to follow the moved entry
 | 
					                if self.selected_entry_index > 0:
 | 
				
			||||||
            table = self.query_one("#entries-table", DataTable)
 | 
					                    self.selected_entry_index -= 1
 | 
				
			||||||
            display_index = self.actual_index_to_display_index(self.selected_entry_index)
 | 
					                self.populate_entries_table()
 | 
				
			||||||
            if table.row_count > 0 and display_index < table.row_count:
 | 
					                # Update the DataTable cursor position to follow the moved entry
 | 
				
			||||||
                table.move_cursor(row=display_index)
 | 
					                table = self.query_one("#entries-table", DataTable)
 | 
				
			||||||
            self.update_entry_details()
 | 
					                display_index = self.actual_index_to_display_index(self.selected_entry_index)
 | 
				
			||||||
            self.update_status(message)
 | 
					                if table.row_count > 0 and display_index < table.row_count:
 | 
				
			||||||
 | 
					                    table.move_cursor(row=display_index)
 | 
				
			||||||
 | 
					                self.update_entry_details()
 | 
				
			||||||
 | 
					                self.update_status(f"{message} - Changes saved automatically")
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                self.update_status(f"Entry moved but save failed: {save_message}")
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            self.update_status(f"Error moving entry: {message}")
 | 
					            self.update_status(f"Error moving entry: {message}")
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					@ -543,17 +553,22 @@ class HostsManagerApp(App):
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        success, message = self.manager.move_entry_down(self.hosts_file, self.selected_entry_index)
 | 
					        success, message = self.manager.move_entry_down(self.hosts_file, self.selected_entry_index)
 | 
				
			||||||
        if success:
 | 
					        if success:
 | 
				
			||||||
            # Update the selection index to follow the moved entry
 | 
					            # Auto-save the changes immediately
 | 
				
			||||||
            if self.selected_entry_index < len(self.hosts_file.entries) - 1:
 | 
					            save_success, save_message = self.manager.save_hosts_file(self.hosts_file)
 | 
				
			||||||
                self.selected_entry_index += 1
 | 
					            if save_success:
 | 
				
			||||||
            self.populate_entries_table()
 | 
					                # Update the selection index to follow the moved entry
 | 
				
			||||||
            # Update the DataTable cursor position to follow the moved entry
 | 
					                if self.selected_entry_index < len(self.hosts_file.entries) - 1:
 | 
				
			||||||
            table = self.query_one("#entries-table", DataTable)
 | 
					                    self.selected_entry_index += 1
 | 
				
			||||||
            display_index = self.actual_index_to_display_index(self.selected_entry_index)
 | 
					                self.populate_entries_table()
 | 
				
			||||||
            if table.row_count > 0 and display_index < table.row_count:
 | 
					                # Update the DataTable cursor position to follow the moved entry
 | 
				
			||||||
                table.move_cursor(row=display_index)
 | 
					                table = self.query_one("#entries-table", DataTable)
 | 
				
			||||||
            self.update_entry_details()
 | 
					                display_index = self.actual_index_to_display_index(self.selected_entry_index)
 | 
				
			||||||
            self.update_status(message)
 | 
					                if table.row_count > 0 and display_index < table.row_count:
 | 
				
			||||||
 | 
					                    table.move_cursor(row=display_index)
 | 
				
			||||||
 | 
					                self.update_entry_details()
 | 
				
			||||||
 | 
					                self.update_status(f"{message} - Changes saved automatically")
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                self.update_status(f"Entry moved but save failed: {save_message}")
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            self.update_status(f"Error moving entry: {message}")
 | 
					            self.update_status(f"Error moving entry: {message}")
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue