refactor: Remove deprecated scripts and clean up UIManager methods for improved maintainability

This commit is contained in:
William Valentin
2025-08-10 09:49:03 -07:00
parent 1fa9f9cd01
commit 7c7d892150
7 changed files with 2 additions and 292 deletions
+1
View File
@@ -0,0 +1 @@
# placeholder
-110
View File
@@ -1,110 +0,0 @@
# TheChart Scripts Directory
This directory contains interactive demonstrations and utility scripts for TheChart application.
## Scripts Overview
### Testing Scripts
#### `run_tests.py`
Main test runner for the application.
```bash
cd /home/will/Code/thechart
.venv/bin/python scripts/run_tests.py
```
#### `integration_test.py`
Comprehensive integration test for the export system.
- Tests all export formats (JSON, XML, PDF)
- Validates data integrity and file creation
- No GUI dependencies - safe for automated testing
```bash
cd /home/will/Code/thechart
.venv/bin/python scripts/integration_test.py
```
### Feature Testing Scripts
#### `test_note_saving.py`
Tests note saving and retrieval functionality.
- Validates note persistence in CSV files
- Tests special characters and formatting
#### `test_update_entry.py`
Tests entry update functionality.
- Validates data modification operations
- Tests date validation and duplicate handling
#### `test_keyboard_shortcuts.py`
Tests keyboard shortcut functionality.
- Validates keyboard event handling
- Tests shortcut combinations and responses
### Interactive Demonstrations
#### `test_menu_theming.py`
Interactive demonstration of menu theming functionality.
- Live theme switching demonstration
- Visual display of theme colors
- Real-time menu color updates
```bash
cd /home/will/Code/thechart
.venv/bin/python scripts/test_menu_theming.py
```
## Usage
All scripts should be run from the project root directory using the virtual environment:
```bash
cd /home/will/Code/thechart
source .venv/bin/activate.fish # For fish shell
# OR
source .venv/bin/activate # For bash/zsh
python scripts/<script_name>.py
```
## Test Organization
### Unit Tests
Located in `/tests/` directory:
- `test_theme_manager.py` - Theme manager functionality tests
- `test_data_manager.py` - Data management tests
- `test_ui_manager.py` - UI component tests
- `test_graph_manager.py` - Graph functionality tests
- And more...
Run unit tests with:
```bash
cd /home/will/Code/thechart
.venv/bin/python -m pytest tests/
```
### Integration Tests
Located in `/scripts/` directory:
- `integration_test.py` - Export system integration test
- Feature-specific test scripts
### Interactive Demos
Located in `/scripts/` directory:
- `test_menu_theming.py` - Menu theming demonstration
## Test Data
- Integration tests create temporary export files in `integration_test_exports/` (auto-cleaned)
- Test scripts use the main `thechart_data.csv` file unless specified otherwise
- No test data is committed to the repository
## Development
When adding new scripts:
1. Place them in this directory
2. Use the standard shebang: `#!/usr/bin/env python3`
3. Add proper docstrings and error handling
4. Update this README with script documentation
5. Follow the project's linting and formatting standards
6. For unit tests, place them in `/tests/` directory
7. For integration tests or demos, place them in `/scripts/` directory
@@ -1,27 +0,0 @@
#!/usr/bin/env python3
"""
⚠️ DEPRECATED SCRIPT ⚠️
This script has been consolidated into the new unified test suite.
Please use the new testing structure instead:
For theme testing:
.venv/bin/python scripts/quick_test.py theme
For integration testing:
.venv/bin/python scripts/quick_test.py integration
For all tests:
.venv/bin/python scripts/run_tests.py
See TESTING_MIGRATION.md for full details.
"""
import sys
print("⚠️ This script is deprecated. Please use the new test structure.")
print("See TESTING_MIGRATION.md for migration instructions.")
sys.exit(1)
# Original script content below (preserved for reference):
# """ + content[content.find('"""'):] if '"""' in content else content + """
-27
View File
@@ -1,27 +0,0 @@
#!/usr/bin/env python3
"""
⚠️ DEPRECATED SCRIPT ⚠️
This script has been consolidated into the new unified test suite.
Please use the new testing structure instead:
For theme testing:
.venv/bin/python scripts/quick_test.py theme
For integration testing:
.venv/bin/python scripts/quick_test.py integration
For all tests:
.venv/bin/python scripts/run_tests.py
See TESTING_MIGRATION.md for full details.
"""
import sys
print("⚠️ This script is deprecated. Please use the new test structure.")
print("See TESTING_MIGRATION.md for migration instructions.")
sys.exit(1)
# Original script content below (preserved for reference):
# """ + content[content.find('"""'):] if '"""' in content else content + """
-27
View File
@@ -1,27 +0,0 @@
#!/usr/bin/env python3
"""
⚠️ DEPRECATED SCRIPT ⚠️
This script has been consolidated into the new unified test suite.
Please use the new testing structure instead:
For theme testing:
.venv/bin/python scripts/quick_test.py theme
For integration testing:
.venv/bin/python scripts/quick_test.py integration
For all tests:
.venv/bin/python scripts/run_tests.py
See TESTING_MIGRATION.md for full details.
"""
import sys
print("⚠️ This script is deprecated. Please use the new test structure.")
print("See TESTING_MIGRATION.md for migration instructions.")
sys.exit(1)
# Original script content below (preserved for reference):
# """ + content[content.find('"""'):] if '"""' in content else content + """
-27
View File
@@ -1,27 +0,0 @@
#!/usr/bin/env python3
"""
⚠️ DEPRECATED SCRIPT ⚠️
This script has been consolidated into the new unified test suite.
Please use the new testing structure instead:
For theme testing:
.venv/bin/python scripts/quick_test.py theme
For integration testing:
.venv/bin/python scripts/quick_test.py integration
For all tests:
.venv/bin/python scripts/run_tests.py
See TESTING_MIGRATION.md for full details.
"""
import sys
print("⚠️ This script is deprecated. Please use the new test structure.")
print("See TESTING_MIGRATION.md for migration instructions.")
sys.exit(1)
# Original script content below (preserved for reference):
# """ + content[content.find('"""'):] if '"""' in content else content + """
+1 -74
View File
@@ -5,7 +5,7 @@ import sys
import tkinter as tk
from collections.abc import Callable
from datetime import datetime
from tkinter import messagebox, ttk
from tkinter import ttk
from typing import Any
import pandas as pd
@@ -1564,10 +1564,6 @@ class UIManager:
return vars_dict
def _get_quick_doses(self, medicine_key: str) -> list[str]:
"""Get common dose amounts for quick selection."""
return self.medicine_manager.get_quick_doses(medicine_key)
def _populate_dose_history(self, text_widget: tk.Text, doses_str: str) -> None:
"""Populate dose history text widget with formatted dose data."""
text_widget.configure(state="normal")
@@ -1606,75 +1602,6 @@ class UIManager:
# Always keep text widget enabled for user editing
def _take_dose(
self,
med_name: str,
entry_var: tk.StringVar,
med_key: str,
vars_dict: dict[str, Any],
) -> None:
"""Handle taking a dose with feedback and state management."""
dose = entry_var.get().strip()
# Get the dose text widget - this is what the save function reads from
dose_text_widget = vars_dict.get(f"{med_key}_doses_text")
if not dose_text_widget:
self.logger.error(f"Dose text widget not found for {med_key}")
return
# Find the parent edit window
parent_window = dose_text_widget.winfo_toplevel()
if not dose:
messagebox.showerror(
"Error",
f"Please enter a dose amount for {med_name}",
parent=parent_window,
)
return
# Get current time and timestamp
now = datetime.now()
time_str = now.strftime("%I:%M %p")
# Ensure text widget is enabled
dose_text_widget.configure(state="normal")
# Get current content from the text widget
current_content = dose_text_widget.get(1.0, tk.END).strip()
self.logger.debug(f"Current content before adding dose: '{current_content}'")
# Create new dose entry in the display format
new_dose_line = f"{time_str} - {dose}"
self.logger.debug(f"New dose line: '{new_dose_line}'")
# Add the new dose to the text widget
if current_content == "No doses recorded today" or not current_content:
dose_text_widget.delete(1.0, tk.END)
dose_text_widget.insert(1.0, new_dose_line)
self.logger.debug("Added first dose")
else:
# Append to existing content with proper formatting
updated_content = current_content + f"\n{new_dose_line}"
self.logger.debug(f"Updated content: '{updated_content}'")
dose_text_widget.delete(1.0, tk.END)
dose_text_widget.insert(1.0, updated_content)
self.logger.debug("Added subsequent dose")
# Verify what's actually in the widget after insertion
final_content = dose_text_widget.get(1.0, tk.END).strip()
self.logger.debug(f"Final content in widget: '{final_content}'")
# Clear entry field
entry_var.set("")
# Success feedback
messagebox.showinfo(
"Dose Recorded",
f"{med_name} dose of {dose} recorded at {time_str}",
parent=parent_window,
)
def _add_edit_buttons(
self,
parent: ttk.Frame,