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

42 lines
1.4 KiB
Python

from PyQt6.QtWidgets import QVBoxLayout, QLabel, QCheckBox
import cv2
from .ImageParameterDialog import ImageParameterDialog
import ImageProcessingWorker
class FlipDialog(ImageParameterDialog):
def __init__(self, image):
super().__init__(image, ImageProcessingWorker.ImageProcessingWorker)
self.setWindowTitle("Flip Image")
self.layout = QVBoxLayout()
self.horizontal_flip_checkbox = QCheckBox("Flip Horizontally")
self.horizontal_flip_checkbox.stateChanged.connect(self.update)
self.vertical_flip_checkbox = QCheckBox("Flip Vertically")
self.vertical_flip_checkbox.stateChanged.connect(self.update)
self.layout.addWidget(QLabel("Select flip options:"))
self.layout.addWidget(self.horizontal_flip_checkbox)
self.layout.addWidget(self.vertical_flip_checkbox)
self.layout.addWidget(self.button_box)
self.setLayout(self.layout)
def update(self):
self.send_to_process({
'flip_horizontal': self.horizontal_flip_checkbox.isChecked(),
'flip_vertical': self.vertical_flip_checkbox.isChecked()
})
def process_image(self, image, values):
if values['flip_horizontal']:
image = cv2.flip(image, 1)
if values['flip_vertical']:
image = cv2.flip(image, 0)
return image
@classmethod
def dialog_name(cls):
return "Flip Image"