Docs: rewrite README.md for complete PySide6 transition
This commit is contained in:
parent
551f5a6b8f
commit
635b65b7e1
52
README.md
52
README.md
|
|
@ -1,24 +1,29 @@
|
|||
<div style="display:flex; gap:16px; align-items:center;">
|
||||
<img src="app/assets/logo.png" alt="ICRA" width="140"/>
|
||||
<div>
|
||||
<strong>Interactive Color Range Analyzer</strong> is being reimagined with a <em>PySide6</em> user interface.<br/>
|
||||
This branch focuses on building a native desktop shell with modern window controls before porting the color-analysis features.
|
||||
<strong>Interactive Color Range Analyzer (ICRA)</strong><br/>
|
||||
A fully-featured, PySide6-powered desktop application for precise color matching, image analysis, and statistics generation.
|
||||
</div>
|
||||
</div>
|
||||
|
||||
## Current prototype
|
||||
- Custom frameless window with minimise / maximise / close controls that hook into Windows natively
|
||||
- Dark themed layout and basic image preview powered by Qt
|
||||
- “Open image” workflow that displays the selected asset scaled to the viewport
|
||||
|
||||
> ⚠️ Legacy Tk features (sliders, exclusions, folder navigation, stats) are not wired up yet. The goal here is to validate the PySide6 shell first.
|
||||
## Features
|
||||
- **High-Performance Image Processing:** Native, vectorized NumPy operations for lightning-fast HSV conversion and color matching.
|
||||
- **Batch Folder Processing:** Load a folder of images and instantly export an aggregated `icra_stats.csv` with localized formatting (dot or comma decimals depending on your language).
|
||||
- **Eyedropper Tool:** Quickly pick target matching colors directly from the image canvas.
|
||||
- **Advanced Selection:** Support for exclusion zones (rectangles and free-draw polygons) overlaid on the image, all dynamically rendered via `QGraphicsView`.
|
||||
- **Modern UI & UX:**
|
||||
- Drag-and-drop support for files and folders.
|
||||
- Custom dark and light themes with native-feeling borderless titlebars and a categorized menu bar.
|
||||
- Window size and position persistence between launches.
|
||||
- Keyboard shortcuts for rapid workflow.
|
||||
- **Configurable:** Uses `config.toml` to drive everything from overlay matching colors to default sliders and application language (`en`/`de`).
|
||||
|
||||
## Requirements
|
||||
- Python 3.11+
|
||||
- [uv](https://github.com/astral-sh/uv) for dependency management
|
||||
- Windows 10/11 recommended (PySide6 build included; Linux/macOS should work but are untested in this branch)
|
||||
- Works across Windows, macOS, and Linux (requires PySide6 and numpy)
|
||||
|
||||
## Setup with uv (PowerShell example)
|
||||
## Setup with uv
|
||||
```bash
|
||||
git clone https://git.lukasmahler.de/lm/ICRA.git
|
||||
cd ICRA
|
||||
|
|
@ -28,24 +33,25 @@ uv pip install .
|
|||
uv run icra
|
||||
```
|
||||
|
||||
The app launches directly as a PySide6 GUI—no browser or local web server involved. Use the “Open Image…” button to load a file and test resizing/snap behaviour.
|
||||
## Running the Test Suite
|
||||
The core image processing logic and UI data models are rigorously tested using `pytest`.
|
||||
```bash
|
||||
uv run pytest tests/ -v
|
||||
```
|
||||
|
||||
## Roadmap (branch scope)
|
||||
1. Port hue/saturation/value controls to Qt widgets
|
||||
2. Re-implement exclusion drawing using QPainter overlays
|
||||
3. Integrate existing image-processing logic (`app/logic`) with the new UI
|
||||
|
||||
## Project layout
|
||||
## Project Layout
|
||||
```
|
||||
app/
|
||||
assets/ # Shared branding
|
||||
gui/, logic/ # Legacy Tk code kept for reference
|
||||
qt/ # New PySide6 implementation (main_window, app bootstrap)
|
||||
config.toml # Historical defaults (unused in the prototype)
|
||||
lang/ # Localization strings (TOML format)
|
||||
logic/ # Configuration loading and application constants
|
||||
qt/ # PySide6 implementation (main_window, custom UI widgets, vectorized image processing)
|
||||
tests/ # Pytest unit tests
|
||||
config.toml # Configurable overlay colors, slider defaults
|
||||
main.py # Entry point -> PySide6 launcher
|
||||
```
|
||||
|
||||
## Development notes
|
||||
## Development Notes
|
||||
- The legacy `Tkinter` codebase has been completely removed in favor of `PySide6`.
|
||||
- Quick syntax check: `uv run python -m compileall app main.py`
|
||||
- Uploaded images are not persisted; the preview uses Qt pixmaps only.
|
||||
- Contributions welcome—please target this branch with PySide6-specific improvements.
|
||||
- Contributions welcome!
|
||||
|
|
|
|||
Loading…
Reference in New Issue