44 lines
1.3 KiB
Python
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()
|