diff --git a/ui/exif_handler_window.py b/ui/exif_handler_window.py new file mode 100644 index 0000000..8564cba --- /dev/null +++ b/ui/exif_handler_window.py @@ -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()