Added exif editor windows, generated by ChatGPT.
This commit is contained in:
parent
ca24cc727d
commit
22cce2a551
1 changed files with 87 additions and 0 deletions
87
ui/exif_handler_window.py
Normal file
87
ui/exif_handler_window.py
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
from PySide6.QtCore import Signal
|
||||||
|
from PySide6.QtWidgets import (
|
||||||
|
QMainWindow, QWidget, QVBoxLayout, QComboBox, QListWidget,
|
||||||
|
QLineEdit, QHBoxLayout, QPushButton, QMessageBox
|
||||||
|
)
|
||||||
|
# By ChatGPT
|
||||||
|
class ExifEditor(QMainWindow):
|
||||||
|
# Signal to emit the updated EXIF data
|
||||||
|
exif_data_updated = Signal(dict)
|
||||||
|
|
||||||
|
def __init__(self, exif_data):
|
||||||
|
super().__init__()
|
||||||
|
self.exif_data = exif_data
|
||||||
|
self.current_key = None
|
||||||
|
|
||||||
|
self.setWindowTitle("EXIF Editor")
|
||||||
|
self.resize(400, 300)
|
||||||
|
|
||||||
|
# Main widget and layout
|
||||||
|
main_widget = QWidget()
|
||||||
|
main_layout = QVBoxLayout()
|
||||||
|
main_widget.setLayout(main_layout)
|
||||||
|
self.setCentralWidget(main_widget)
|
||||||
|
|
||||||
|
# ComboBox to select lists
|
||||||
|
self.combo_box = QComboBox()
|
||||||
|
self.combo_box.addItems(self.exif_data.keys())
|
||||||
|
self.combo_box.currentTextChanged.connect(self.load_list)
|
||||||
|
main_layout.addWidget(self.combo_box)
|
||||||
|
|
||||||
|
# List widget to display items
|
||||||
|
self.list_widget = QListWidget()
|
||||||
|
main_layout.addWidget(self.list_widget)
|
||||||
|
|
||||||
|
# Line edit for adding items
|
||||||
|
self.line_edit = QLineEdit()
|
||||||
|
self.line_edit.setPlaceholderText("Enter new item...")
|
||||||
|
main_layout.addWidget(self.line_edit)
|
||||||
|
|
||||||
|
# Buttons: Add, Delete, Cancel
|
||||||
|
button_layout = QHBoxLayout()
|
||||||
|
self.add_button = QPushButton("Add")
|
||||||
|
self.add_button.clicked.connect(self.add_item)
|
||||||
|
self.delete_button = QPushButton("Delete")
|
||||||
|
self.delete_button.clicked.connect(self.delete_item)
|
||||||
|
self.cancel_button = QPushButton("Close")
|
||||||
|
self.cancel_button.clicked.connect(self.close_editor)
|
||||||
|
|
||||||
|
button_layout.addWidget(self.add_button)
|
||||||
|
button_layout.addWidget(self.delete_button)
|
||||||
|
button_layout.addWidget(self.cancel_button)
|
||||||
|
main_layout.addLayout(button_layout)
|
||||||
|
|
||||||
|
# Load the first list by default
|
||||||
|
self.load_list(self.combo_box.currentText())
|
||||||
|
|
||||||
|
def load_list(self, key):
|
||||||
|
"""Load the selected list into the list widget."""
|
||||||
|
self.current_key = key
|
||||||
|
self.list_widget.clear()
|
||||||
|
if key in self.exif_data:
|
||||||
|
self.list_widget.addItems(self.exif_data[key])
|
||||||
|
|
||||||
|
def add_item(self):
|
||||||
|
"""Add a new item to the selected list."""
|
||||||
|
new_item = self.line_edit.text().strip()
|
||||||
|
if new_item:
|
||||||
|
self.exif_data[self.current_key].append(new_item)
|
||||||
|
self.list_widget.addItem(new_item)
|
||||||
|
self.line_edit.clear()
|
||||||
|
else:
|
||||||
|
QMessageBox.warning(self, "Warning", "Cannot add an empty item.")
|
||||||
|
|
||||||
|
def delete_item(self):
|
||||||
|
"""Delete the selected item from the list."""
|
||||||
|
selected_item = self.list_widget.currentItem()
|
||||||
|
if selected_item:
|
||||||
|
item_text = selected_item.text()
|
||||||
|
self.exif_data[self.current_key].remove(item_text)
|
||||||
|
self.list_widget.takeItem(self.list_widget.row(selected_item))
|
||||||
|
else:
|
||||||
|
QMessageBox.warning(self, "Warning", "No item selected to delete.")
|
||||||
|
|
||||||
|
def close_editor(self):
|
||||||
|
"""Emit the updated exif_data and close the editor."""
|
||||||
|
self.exif_data_updated.emit(self.exif_data)
|
||||||
|
self.close()
|
Loading…
Add table
Add a link
Reference in a new issue