Warry
121dbb788d
feat: refactor settings UI with category navigation and add Delimiters page
...
Closes #640
## Changes
### UI Refactoring
- Replace monolithic settings dialog with category-based navigation
- Add QListWidget (lw_categories) for category selection on the left
- Add QStackedWidget (sw_categories) for content pages on the right
- Organize settings into 5 distinct pages:
- Flags (14 checkboxes)
- Quality (3 combo boxes)
- Numbers (2 spin boxes)
- Paths & Formats (7 line edits + 2 browse buttons)
- Delimiters (4 line edits) — NEW
### New Feature: Delimiters Category
- Add customizable separators for artists in metadata and filenames:
- metadata_delimiter_artist
- metadata_delimiter_album_artist
- filename_delimiter_artist
- filename_delimiter_album_artist
- Auto-integration with DialogPreferences via parameters_line_edit
- Line edits with max width 100px for compact display
### Styling
- Apply dark theme to settings dialog:
- Category list: #2b2b2b background, #3d5a80 selection, #3a3a3a hover
- Settings area: #333333 background, styled GroupBoxes (#3a3a3a)
- Light text (#e0e0e0) for better contrast
- Add spacing property (6px) to category list for better readability
- Style QListWidget items with padding (4px 3px) and margin (2px 0px)
### Testing
- Add comprehensive test suite (61 tests total):
- test_settings_ui.py: UI and basic integration (14 tests)
- test_settings_dialog_structure.py: detailed structure validation (20 tests)
- test_dialog_preferences_integration.py: DialogPreferences integration (14 tests)
- test_delimiters_category.py: new Delimiters page validation (13 tests)
- Fix ruff issues (F841, S108) in test files
- All tests passing with 100% success rate
### Documentation
- Add docs/refactor_settings_ui.md: comprehensive refactor overview
- Add docs/delimiters_category.md: Delimiters feature documentation
- Add docs/ui_styles.md: dark theme style guide
- Add docs/testing_summary.md: testing overview and commands
### Code Quality
- Apply ruff/black/pyupgrade via pre-commit hooks
- Fix F841 (unused variable) in test_dialog_preferences_integration.py
- Fix S108 (insecure temp path) using Path.home() in test_settings_ui.py
- End-of-file fixes applied automatically
## Files Modified
- tidal_dl_ng/ui/dialog_settings.ui (complete restructure)
- tidal_dl_ng/ui/dialog_settings.py (auto-generated from .ui)
- tidal_dl_ng/dialog.py (add 4 delimiter params + Delimiters category)
- tests/* (4 new test files with 61 tests)
- docs/* (4 new documentation files)
## Impact
- Improved UX: intuitive category navigation, better visual organization
- Extensibility: easy to add new settings pages/categories
- Quality: comprehensive test coverage ensures robustness
- User flexibility: customizable separators for metadata and filenames
## Technical Notes
- QStackedWidget pages indexed 0-4 matching category list order
- Navigation via QListWidget::currentRowChanged signal
- Automatic save/load through existing DialogPreferences methods
- No breaking changes to existing settings or configuration
## Testing Commands
```powershell
poetry run pre-commit run -a
poetry run pytest -q
2025-11-30 15:37:32 +01:00
Robert Honz
d3164f48de
✨ Add Python 3.13 support and update dependencies
...
Extends Python version support to include 3.13 in CI workflows,
tox environments, and documentation. Updates dependencies to
ensure compatibility with the new Python version and resolves
legacy workarounds for macOS GitHub Actions runners.
Upgrades include:
- `pyside6` to version 6.9.1
- `click` to version 8.2.1
- Other relevant dependency updates for compatibility.
Re-enables `pyupgrade` pre-commit hook targeting Python 3.12+.
Fixed binary creation for Intel macOS.
2025-07-01 08:04:21 +02:00
Robert Honz
a2e8be4114
✨ Dependency update. pyproject.toml fixes. isort-seed removal.
2025-06-27 09:42:35 +02:00
Robert Honz
b0bf71ccf5
👷 Run check on commit.
2025-02-01 08:58:36 +01:00
Robert Honz
757817deec
👷 Poetry update to v2
2025-01-31 08:51:38 +01:00
Robert Honz
6ef9c4ba1e
👷 Minimum Python version is now 3.12.
2024-12-17 09:45:10 +01:00
Robert Honz
a30ee0550d
🛠️ Fixed GitHub action on push (tox).
2024-01-12 13:24:49 +01:00
Robert Honz
87091fb060
🛠️ Isort isn't used anymore due to conflicts with black. Black reformatting done. Pre-Commit-Hook version upgrades.
2024-01-12 11:12:47 +01:00
Robert Honz
8a46e96921
🛠️ Pre Commit Hooks adjusted.
2024-01-12 10:55:40 +01:00
Robert Honz
8196213247
🛠️ Isort refactoring.
2024-01-12 10:47:17 +01:00
Robert Honz
a99c42ad02
♻️ Ruff reformatting.
2024-01-12 08:15:54 +01:00
Robert Honz
0d4a9d6b87
🌟 Re-add all project files.
2023-12-19 23:58:57 +01:00