feat(v2.3.0): add JSON flattening, fix file handle leaks, update README
This commit is contained in:
parent
5d838bc27e
commit
c34e2d663c
3 changed files with 106 additions and 19 deletions
94
README.md
94
README.md
|
|
@ -1,16 +1,34 @@
|
|||
# PNG Metadata Editor v1.0.0
|
||||
# PNG Metadata Editor v2.3.0
|
||||
|
||||
A graphical tool for viewing and editing metadata in PNG files.
|
||||
A graphical tool for viewing and editing metadata in PNG files with an intuitive image browser interface.
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
|
||||
### Core Features
|
||||
- View all metadata fields (tEXt, zTXt, iTXt chunks) in PNG files
|
||||
- Add, edit, and delete metadata fields
|
||||
- Pretty-print JSON-formatted values
|
||||
- Copy metadata values to clipboard
|
||||
- Visual indication of unsaved changes
|
||||
- Pretty-print JSON values in editor (auto-flattens on save)
|
||||
|
||||
### Image Browser
|
||||
- Browse directories with thumbnail previews
|
||||
- Auto-scroll to selected images
|
||||
- Trackpad and mousewheel scrolling support
|
||||
- Smooth navigation between multiple files
|
||||
|
||||
### User Interface
|
||||
- Automatic dark mode detection (macOS, Windows, Linux)
|
||||
- Adaptive canvas background based on system theme
|
||||
- Unicode support throughout UI
|
||||
- Resizable panes for optimal workflow
|
||||
|
||||
### Technical Improvements
|
||||
- Smart JSON handling: displays formatted, saves flattened
|
||||
- Proper file handle management for reliable multi-file loading
|
||||
- Enhanced scroll region updates for smooth browsing
|
||||
|
||||
## Installation
|
||||
|
||||
|
|
@ -24,21 +42,37 @@ A graphical tool for viewing and editing metadata in PNG files.
|
|||
Install required packages using pip:
|
||||
|
||||
```bash
|
||||
pip install pillow pngmeta
|
||||
pip install pillow
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Basic Workflow
|
||||
|
||||
1. Run the application:
|
||||
```bash
|
||||
python png-meta-editor.py
|
||||
```
|
||||
|
||||
2. Open a PNG file using the "Open PNG File" button
|
||||
2. **Browse Directory**: Click "Browse Directory" to load thumbnails from a folder
|
||||
3. **Select Image**: Click any thumbnail to load its metadata
|
||||
4. **View Metadata**: See all fields in the tree view with preview
|
||||
5. **Edit Fields**:
|
||||
- Double-click or use "Edit Field" to modify values
|
||||
- JSON values display formatted but save flattened
|
||||
6. **Save Changes**: Click "Save Changes" to write metadata back to file
|
||||
|
||||
3. View metadata in the tree view on the left
|
||||
4. Select a field to see its full value in the detail pane
|
||||
5. Use the buttons to add, edit, or delete fields
|
||||
### Keyboard Shortcuts
|
||||
|
||||
- **Double-click** on tree item to edit
|
||||
- **Enter/Escape** in dialogs to confirm/cancel
|
||||
|
||||
### Dark Mode
|
||||
|
||||
The application automatically detects your system theme:
|
||||
- **macOS**: Reads `AppleInterfaceStyle` setting
|
||||
- **Windows**: Reads personalization registry settings
|
||||
- **Linux**: Checks GTK theme preferences
|
||||
|
||||
## Building for Distribution
|
||||
|
||||
|
|
@ -68,7 +102,7 @@ pyinstaller --name="PNG Metadata Editor" \
|
|||
png-meta-editor.py
|
||||
```
|
||||
|
||||
#### Mac OS
|
||||
#### macOS
|
||||
```bash
|
||||
pyinstaller --name="PNG Metadata Editor" \
|
||||
--windowed \
|
||||
|
|
@ -94,15 +128,53 @@ For building, you'll need:
|
|||
- `AppIcon.icns` (Mac icon)
|
||||
- `requirements.txt` (for dependencies)
|
||||
|
||||
## Technical Details
|
||||
|
||||
### JSON Handling
|
||||
|
||||
The editor intelligently handles JSON metadata:
|
||||
- **Display**: Pretty-printed with indentation for readability
|
||||
- **Storage**: Automatically flattened to single line to preserve original format
|
||||
- **Example**:
|
||||
```json
|
||||
// What you see in editor:
|
||||
{
|
||||
"prompt": "a cat",
|
||||
"steps": 20
|
||||
}
|
||||
|
||||
// What gets saved:
|
||||
{"prompt":"a cat","steps":20}
|
||||
```
|
||||
|
||||
### File Management
|
||||
|
||||
- Proper file handle release after reading metadata
|
||||
- Supports loading multiple files sequentially without issues
|
||||
- Thumbnail caching for smooth browsing experience
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see [LICENSE](LICENSE) for details.
|
||||
|
||||
## Author
|
||||
|
||||
Robert Tusa
|
||||
Robert Tusa
|
||||
robert@tusa.at
|
||||
|
||||
## Version History
|
||||
|
||||
- **1.0.0 (2026-01-05)**: Initial release
|
||||
### v2.3.0 (2026-01-07) - Major UI Update
|
||||
- Added image browser with thumbnail previews
|
||||
- Implemented dark mode detection for all platforms
|
||||
- Added trackpad/mousewheel scrolling support
|
||||
- Smart JSON flattening (preserves original format)
|
||||
- Fixed file loading issues with proper handle management
|
||||
- Enhanced scroll region updates
|
||||
- Unicode support in UI elements
|
||||
|
||||
### v1.0.0 (2026-01-05) - Initial Release
|
||||
- Basic metadata viewing and editing
|
||||
- Tree view with detail pane
|
||||
- Add, edit, delete operations
|
||||
- JSON pretty-printing
|
||||
Loading…
Add table
Add a link
Reference in a new issue