studia/jezyki-skryptowe/image-editor/editor/dialogs/ImageParameterDialog.py

53 lines
1.5 KiB
Python

from PyQt6.QtWidgets import QDialog, QDialogButtonBox
class ImageParameterDialog(QDialog):
def __init__(self, image, worker_factory):
super().__init__()
self._image = image
self.last_processed = image
self.worker_factory = worker_factory
self.setup_worker()
self.button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Ok | QDialogButtonBox.StandardButton.Cancel)
self.button_box.accepted.connect(self.accept)
self.button_box.rejected.connect(self.reject)
def setup_worker(self):
self.worker = self.worker_factory(self._image, self.process_image)
self.worker.result_ready.connect(self._update_last_processed)
self.update_values_signal = self.worker.update_values
self.update_values_signal.connect(self.worker.process_image)
self.worker.start()
def _update_last_processed(self, new_image):
self.last_processed = new_image
def _on_accepted(self):
self.worker.stop()
self.accept()
def process_image(self,image, values):
return image
def result_ready(self):
return self.worker.result_ready
def send_to_process(self, values):
self.update_values_signal.emit(values)
def set_accept_enable(self, value):
self.button_box.button(QDialogButtonBox.StandardButton.Ok).setEnabled(value)
@classmethod
def dialog_name(cls):
return cls.__name__
@classmethod
def dialog_icon(cls):
return None