studia/jezyki-skryptowe/image-editor/DialogsPanel.py
2024-06-17 23:55:32 +02:00

44 lines
1.3 KiB
Python

from PyQt6.QtWidgets import QFileDialog, QWidget, QToolBar, QVBoxLayout, QPushButton
from PyQt6.QtGui import QIcon
from PyQt6.QtCore import pyqtSignal
import numpy as np
from dialogs import DIALOGS
DIALOG_PROPERTY = "dialog"
class DialogsPanel(QWidget):
result_ready = pyqtSignal(np.ndarray)
def __init__(self, image_manager):
super().__init__()
self.mgr = image_manager
self.dialog_buttons = []
layout = QVBoxLayout()
self.setLayout(layout)
for DIALOG in DIALOGS:
btn = QPushButton(DIALOG.dialog_name(), self)
btn.setProperty(DIALOG_PROPERTY, DIALOG)
btn.clicked.connect(self.open_dialog)
self.dialog_buttons.append(btn)
layout.addWidget(btn)
def open_dialog(self):
dialog_factory = self.sender().property(DIALOG_PROPERTY)
self.dialog = dialog_factory(self.mgr.image())
self.dialog.result_ready().connect(lambda img : self.result_ready.emit(img))
self.dialog.accepted.connect(self.on_accepted)
self.dialog.rejected.connect(self.on_rejected)
self.dialog.exec()
def on_accepted(self):
self.mgr.update(self.dialog.last_processed)
self.dialog = None
def on_rejected(self):
self.mgr.refresh()