Feature/gui
This commit is contained in:
parent
c36ab9b733
commit
1512e8efeb
15 changed files with 2328 additions and 299 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