Source code for spinningdiskanalyzer.frontend.pages.original

from .original_ui import Ui_page
from .page        import Page
from .            import page
from ..           import tasks

from PySide6.QtWidgets import QWidget

from pathlib import Path


[docs] class Original(page.ConfirmClose, page.NavNext, Page): """Displays the stitched original image.""" def __init__(self, parent: QWidget = None): # Load user interface design created in Qt Designer. super().__init__(parent) self.ui = Ui_page() self.ui.setupUi(self) # Make sure hiding buttons does not change layout. button = self.ui.next size_policy = button.sizePolicy() size_policy.setRetainSizeWhenHidden(True) button.setSizePolicy(size_policy) # Connect signals to slots. self.ui.back.clicked.connect(self.go_back.emit) self.ui.next.clicked.connect(self.go_next.emit) # Initialize instance attributes. self.task = None
[docs] def on_enter(self): """Called when entering the page.""" self.mark_busy() self.compress_images()
[docs] def compress_images(self): """Triggers the image compression.""" self.task = tasks.CompressImages() self.task.status_update.connect(self.status_update) self.task.status_clear.connect(self.status_clear) self.task.finished.connect(self.stitch_images) folder = Path(self.parent().select.ui.folder_display.text()) sources = folder targets = folder/'analysis'/'compressed' self.task.start(sources, targets)
[docs] def stitch_images(self): """Triggers the image stitching.""" self.task = tasks.StitchImages() self.task.status_update.connect(self.status_update) self.task.status_clear.connect(self.status_clear) self.task.finished.connect(self.tile_image) folder = Path(self.parent().select.ui.folder_display.text()) sources = folder/'analysis'/'compressed' target = folder/'analysis'/'stitched.tif' self.task.start(sources, target)
[docs] def tile_image(self): """Triggers tiling of the display image.""" self.task = tasks.TileImage() self.task.status_update.connect(self.status_update) self.task.status_clear.connect(self.status_clear) folder = Path(self.parent().select.ui.folder_display.text()) source = folder/'analysis'/'stitched.tif' target = folder/'tiles'/'stitched.dzi' self.task.finished.connect(self.tasks_done) self.task.start(source, target)
[docs] def tasks_done(self): """Finishes up when all background tasks are done.""" self.task = None folder = Path(self.parent().select.ui.folder_display.text()) tiled = folder/'tiles'/'stitched.dzi' self.ui.viewer.load(tiled) self.mark_ready()
[docs] def invalidate(self): """Invalidates results from this analysis step.""" self.ui.viewer.load(None) self.flush() folder = Path(self.parent().select.ui.folder_display.text()) tasks.delete( ( folder/'analysis'/'compressed', folder/'analysis'/'stitched.tif', folder/'tiles'/'stitched.dzi', folder/'tiles'/'stitched_files', ) )