80 lines
2.7 KiB
Python
80 lines
2.7 KiB
Python
from pathlib import Path
|
|
|
|
from PySide6.QtCore import Slot
|
|
from PySide6.QtUiTools import loadUiType
|
|
from PySide6.QtWidgets import QMainWindow
|
|
from vtkmodules.vtkRenderingOpenGL2 import vtkGenericOpenGLRenderWindow
|
|
|
|
from crystalfly.ui.import_file import ImportFile
|
|
from crystalfly.ui.volume_viewer import VolumeViewer
|
|
from crystalfly.ui.vtk_viewer import VTKImageViewer
|
|
|
|
MainWindowType, _ = loadUiType(str(Path(__file__).parent.joinpath("main_window.ui")))
|
|
|
|
|
|
class MainWindow(QMainWindow, MainWindowType):
|
|
def __init__(self):
|
|
super(MainWindow, self).__init__()
|
|
self.volume = None
|
|
self.transverse = None
|
|
self.sagittal = None
|
|
self.coronal = None
|
|
self.vtk_render_window = vtkGenericOpenGLRenderWindow()
|
|
self.setupUi(self)
|
|
self.file_open_dialog = ImportFile()
|
|
self.file_open.triggered.connect(self.handle_file_open)
|
|
self.init_four_pane()
|
|
self.is_pane_maximum = False
|
|
|
|
def init_four_pane(self):
|
|
self.coronal = VTKImageViewer(1)
|
|
self.sagittal = VTKImageViewer(3)
|
|
self.transverse = VTKImageViewer(4)
|
|
self.volume = VolumeViewer(2)
|
|
self.coronal.image_viewer.SetSliceOrientationToYZ()
|
|
self.sagittal.image_viewer.SetSliceOrientationToXZ()
|
|
self.transverse.image_viewer.SetSliceOrientationToXY()
|
|
|
|
self.volume.doubleClicked.connect(self.cell_max)
|
|
self.coronal.doubleClicked.connect(self.cell_max)
|
|
self.sagittal.doubleClicked.connect(self.cell_max)
|
|
self.transverse.doubleClicked.connect(self.cell_max)
|
|
# self.gridLayout.addWidget()
|
|
self.volume_grid_layout.addWidget(self.volume)
|
|
self.coronal_grid_layout.addWidget(self.coronal)
|
|
self.gridLayout_3.addWidget(self.sagittal)
|
|
self.gridLayout_4.addWidget(self.transverse)
|
|
|
|
@Slot(int)
|
|
def cell_max(self, quadrant: int):
|
|
print(quadrant)
|
|
if self.is_pane_maximum:
|
|
self.widget_3d.show()
|
|
self.widget_coronal.show()
|
|
self.widget_sagittal.show()
|
|
self.widget_transverse.show()
|
|
self.is_pane_maximum = False
|
|
else:
|
|
self.widget_3d.hide()
|
|
self.widget_coronal.hide()
|
|
self.widget_sagittal.hide()
|
|
self.widget_transverse.hide()
|
|
print(quadrant)
|
|
if quadrant == 1:
|
|
self.widget_coronal.show()
|
|
elif quadrant == 2:
|
|
self.widget_3d.show()
|
|
elif quadrant == 3:
|
|
self.widget_sagittal.show()
|
|
elif quadrant == 4:
|
|
self.widget_transverse.show()
|
|
self.is_pane_maximum = True
|
|
|
|
@Slot()
|
|
def cell_click(self):
|
|
print("clicked")
|
|
|
|
@Slot()
|
|
def handle_file_open(self):
|
|
self.file_open_dialog.exec()
|