refactor: Remove deprecated scripts and clean up UIManager methods for improved maintainability
This commit is contained in:
@@ -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 + """
|
|
||||||
@@ -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,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,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
@@ -5,7 +5,7 @@ import sys
|
|||||||
import tkinter as tk
|
import tkinter as tk
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from tkinter import messagebox, ttk
|
from tkinter import ttk
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
@@ -1564,10 +1564,6 @@ class UIManager:
|
|||||||
|
|
||||||
return vars_dict
|
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:
|
def _populate_dose_history(self, text_widget: tk.Text, doses_str: str) -> None:
|
||||||
"""Populate dose history text widget with formatted dose data."""
|
"""Populate dose history text widget with formatted dose data."""
|
||||||
text_widget.configure(state="normal")
|
text_widget.configure(state="normal")
|
||||||
@@ -1606,75 +1602,6 @@ class UIManager:
|
|||||||
|
|
||||||
# Always keep text widget enabled for user editing
|
# 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(
|
def _add_edit_buttons(
|
||||||
self,
|
self,
|
||||||
parent: ttk.Frame,
|
parent: ttk.Frame,
|
||||||
|
|||||||
Reference in New Issue
Block a user