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

58 lines
1.6 KiB
Python

import abc
from PyQt6.QtWidgets import QWidget, QDialog, QDialogButtonBox
from PyQt6.QtGui import QPixmap, QImage, QColor, QPainter, QPen
from PyQt6.QtCore import Qt, QPoint, QThread
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()
# @abc.abstractmethod
def process_image(self,image, values):
pass
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