diff --git a/crystalfly/VTK Error Out.txt b/crystalfly/VTK Error Out.txt
index 19a514d..68bf22d 100644
--- a/crystalfly/VTK Error Out.txt
+++ b/crystalfly/VTK Error Out.txt
@@ -1,8 +1,244 @@
ERROR: In vtkDemandDrivenPipeline.cxx, line 677
-vtkCompositeDataPipeline (00000233450F5040): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (0000023343594B20) has 0 connections but is not optional.
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
ERROR: In vtkDemandDrivenPipeline.cxx, line 677
-vtkCompositeDataPipeline (00000233450F5040): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (0000023343594B20) has 0 connections but is not optional.
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
+
+
+ERROR: In vtkDemandDrivenPipeline.cxx, line 677
+vtkCompositeDataPipeline (000002067CD9E5B0): Input port 0 of algorithm vtkOpenGLGPUVolumeRayCastMapper (000002067B2660B0) has 0 connections but is not optional.
diff --git a/crystalfly/assets/file.png b/crystalfly/assets/file.png
new file mode 100644
index 0000000..ecc93fc
Binary files /dev/null and b/crystalfly/assets/file.png differ
diff --git a/crystalfly/assets/plus.png b/crystalfly/assets/plus.png
new file mode 100644
index 0000000..d6c6329
Binary files /dev/null and b/crystalfly/assets/plus.png differ
diff --git a/crystalfly/ui/__pycache__/main_window.cpython-311.pyc b/crystalfly/ui/__pycache__/main_window.cpython-311.pyc
index d427a53..172eaa0 100644
Binary files a/crystalfly/ui/__pycache__/main_window.cpython-311.pyc and b/crystalfly/ui/__pycache__/main_window.cpython-311.pyc differ
diff --git a/crystalfly/ui/main_window.py b/crystalfly/ui/main_window.py
index eba9256..bfb2b6f 100644
--- a/crystalfly/ui/main_window.py
+++ b/crystalfly/ui/main_window.py
@@ -1,6 +1,7 @@
from pathlib import Path
from PySide6.QtCore import Slot, Qt
+from PySide6.QtGui import QIcon, QAction
from PySide6.QtUiTools import loadUiType
from PySide6.QtWidgets import QMainWindow, QSlider
from vtkmodules.vtkRenderingOpenGL2 import vtkGenericOpenGLRenderWindow
@@ -15,6 +16,8 @@ MainWindowType, _ = loadUiType(str(Path(__file__).parent.joinpath("main_window.u
class MainWindow(QMainWindow, MainWindowType):
def __init__(self):
super(MainWindow, self).__init__()
+ self.cross_action = None
+ self.file_action = None
self.volume = None
self.transverse = None
self.sagittal = None
@@ -24,8 +27,18 @@ class MainWindow(QMainWindow, MainWindowType):
self.file_open_dialog = ImportFile()
self.file_open.triggered.connect(self.handle_file_open)
self.init_four_pane()
+ self.init_tool_bar()
self.is_pane_maximum = False
+ def init_tool_bar(self):
+ self.file_action = QAction(icon=QIcon(str(Path(__file__).parent.parent / "assets" / "file.png")), text="file",
+ parent=self)
+ self.cross_action = QAction(icon=QIcon(str(Path(__file__).parent.parent / "assets" / "plus.png")), text="cross",
+ parent=self)
+ self.file_action.triggered.connect(self.handle_file_open)
+ self.tool_bar.addAction(self.file_action)
+ self.tool_bar.addAction(self.cross_action)
+
def init_four_pane(self):
self.coronal = VTKImageViewer(1)
self.sagittal = VTKImageViewer(3)
diff --git a/crystalfly/ui/main_window.ui b/crystalfly/ui/main_window.ui
index 189436b..360d969 100644
--- a/crystalfly/ui/main_window.ui
+++ b/crystalfly/ui/main_window.ui
@@ -17,23 +17,7 @@
# background-color: rgb(50, 50, 50);
-
- -
-
-
- border-color: rgb(195, 195, 195);
-
-
-
-
-
-
- 工具栏
-
-
-
-
-
-
+
-
@@ -131,30 +115,18 @@ margin-top: -1px;
-
+
+
+ toolBar_2
+
+
+ LeftToolBarArea
+
+
+ false
+
+
打开