58 lines
1.6 KiB
Python
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 |