Files
crystalfly/crystalfly/ui/main_window.py
quantulr 0c8cb7b430 update
2024-04-19 17:08:06 +08:00

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()