GUI: Bottom panels are dockable, can be also turned off
Build and Publish / build (push) Successful in 21s
Build and Publish / build (push) Successful in 21s
This commit is contained in:
@@ -8,7 +8,9 @@ from PySide6.QtWidgets import (
|
||||
QHBoxLayout,
|
||||
QVBoxLayout,
|
||||
QMessageBox,
|
||||
QApplication, )
|
||||
QApplication,
|
||||
QDockWidget)
|
||||
|
||||
from aaredaqlib.coordinate import Coordinate, SmargonCoordinate
|
||||
from aaredaqlib.diffraction_geometry import DiffractionGeometry
|
||||
from aaredaqlib.models import SampleShortInfoList, TokenData
|
||||
@@ -16,7 +18,6 @@ from aaredaqlib.sample_geometry import SampleGeometryModel
|
||||
|
||||
from aaregui.panels.beamline_controls import BeamlineControls
|
||||
from aaregui.panels.data_collection_settings import DataCollectionSettings
|
||||
from aaregui.panels.raster_data_collection import RasterDataCollectionPanel
|
||||
from aaregui.panels.sample_queue_panel import SampleQueuePanel
|
||||
from aaregui.panels.status_panel import StatusPanel
|
||||
from aaregui.panels.tell_sample_panel import TellSamplePanel
|
||||
@@ -28,7 +29,6 @@ from aaregui.widgets.no_wheel_scroll_area import NoWheelScrollArea
|
||||
from aaregui.widgets.status_bar import StatusBar
|
||||
|
||||
|
||||
# Subclass QMainWindow to define the behavior of your application
|
||||
class MainWindow(QMainWindow):
|
||||
sample_geometry = Signal(SampleGeometryModel)
|
||||
|
||||
@@ -98,27 +98,27 @@ class MainWindow(QMainWindow):
|
||||
Qt.ScrollBarPolicy.ScrollBarAlwaysOff
|
||||
)
|
||||
beamline_controls_scroll.setFixedWidth(self.beamline.set_width + 10)
|
||||
bottom_widget_splitter = QSplitter(Qt.Orientation.Horizontal, parent=self)
|
||||
|
||||
bottom_widget = QWidget(self)
|
||||
self.tell_samples = TellSamplePanel(samples=SampleShortInfoList(s = []))
|
||||
self.job_list_panel = SampleQueuePanel()
|
||||
self.status_panel = StatusPanel()
|
||||
|
||||
self.tell_samples = TellSamplePanel(parent=bottom_widget, samples=SampleShortInfoList(s = []))
|
||||
bottom_widget_splitter.addWidget(self.tell_samples)
|
||||
self.job_list_panel = SampleQueuePanel(parent=bottom_widget)
|
||||
bottom_widget_splitter.addWidget(self.job_list_panel)
|
||||
self.tell_samples_dock = QDockWidget("Sample List", self)
|
||||
self.tell_samples_dock.setWidget(self.tell_samples)
|
||||
self.tell_samples_dock.setAllowedAreas(Qt.DockWidgetArea.BottomDockWidgetArea)
|
||||
self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.tell_samples_dock)
|
||||
|
||||
self.status_panel = StatusPanel(parent=bottom_widget)
|
||||
bottom_widget_splitter.addWidget(self.status_panel)
|
||||
self.job_list_dock = QDockWidget("Automation list", self)
|
||||
self.job_list_dock.setWidget(self.job_list_panel)
|
||||
self.job_list_dock.setAllowedAreas(Qt.DockWidgetArea.BottomDockWidgetArea)
|
||||
self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.job_list_dock)
|
||||
|
||||
bottom_widget_layout = QVBoxLayout(bottom_widget)
|
||||
bottom_widget.setLayout(bottom_widget_layout)
|
||||
bottom_widget_layout.addWidget(bottom_widget_splitter)
|
||||
self.status_panel_dock = QDockWidget("Beamline status", self)
|
||||
self.status_panel_dock.setWidget(self.status_panel)
|
||||
self.status_panel_dock.setAllowedAreas(Qt.DockWidgetArea.BottomDockWidgetArea)
|
||||
self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.status_panel_dock)
|
||||
|
||||
splitter = QSplitter(Qt.Orientation.Vertical, parent=self)
|
||||
splitter.addWidget(top_widget)
|
||||
splitter.addWidget(bottom_widget)
|
||||
|
||||
self.setCentralWidget(splitter)
|
||||
self.setCentralWidget(top_widget)
|
||||
|
||||
self.setWindowTitle("AareGUI")
|
||||
self.create_menu_bar()
|
||||
@@ -217,6 +217,34 @@ class MainWindow(QMainWindow):
|
||||
quit_action.triggered.connect(self.close) # Connect to window's `close` method
|
||||
file_menu.addAction(quit_action)
|
||||
|
||||
view_menu = menu_bar.addMenu("View")
|
||||
show_samples_action = QAction("Show Sample List", self)
|
||||
show_samples_action.setCheckable(True)
|
||||
show_samples_action.setChecked(True)
|
||||
show_samples_action.triggered.connect(lambda: self.tell_samples_dock.setVisible(show_samples_action.isChecked()))
|
||||
|
||||
# When dock visibility changes, update the action's checked state
|
||||
self.tell_samples_dock.visibilityChanged.connect(show_samples_action.setChecked)
|
||||
view_menu.addAction(show_samples_action)
|
||||
|
||||
show_job_list_action = QAction("Show job List", self)
|
||||
show_job_list_action.setCheckable(True)
|
||||
show_job_list_action.setChecked(True)
|
||||
show_job_list_action.triggered.connect(self.job_list_dock.setVisible)
|
||||
# When dock visibility changes, update the action's checked state
|
||||
show_job_list_action.triggered.connect(lambda: self.job_list_dock.setVisible(show_job_list_action.isChecked()))
|
||||
view_menu.addAction(show_job_list_action)
|
||||
|
||||
show_beamline_status_action = QAction("Show beamline status", self)
|
||||
show_beamline_status_action.setCheckable(True)
|
||||
show_beamline_status_action.setChecked(True)
|
||||
show_beamline_status_action.triggered.connect(self.status_panel_dock.setVisible)
|
||||
# When dock visibility changes, update the action's checked state
|
||||
show_beamline_status_action.triggered.connect(lambda: self.status_panel_dock.setVisible(show_beamline_status_action.isChecked()))
|
||||
self.status_panel_dock.visibilityChanged.connect(show_beamline_status_action.setChecked)
|
||||
|
||||
view_menu.addAction(show_beamline_status_action)
|
||||
|
||||
# Help menu
|
||||
help_menu = menu_bar.addMenu("Help")
|
||||
about_action = QAction("About", self) # Action for 'About'
|
||||
|
||||
@@ -211,10 +211,7 @@ class RasterGridManager(QObject):
|
||||
painter.setBrush(Qt.BrushStyle.NoBrush)
|
||||
else:
|
||||
painter.setBrush(QBrush(float_to_viridis_brush((values[pxl] - min_value) / (max_value - min_value), alpha=127)))
|
||||
c = self.__geom.sample_to_picture(
|
||||
c0 + Coordinate(x=x * grid.grid_size_mm.x,
|
||||
y=y * grid.grid_size_mm.y)
|
||||
)
|
||||
c = self.__geom.sample_to_picture(c0 + Coordinate(x=x * grid.grid_size_mm.x, y=y * grid.grid_size_mm.y))
|
||||
painter.drawRect(QRect(int(c.x), int(c.y), int(g.x), int(g.y)))
|
||||
|
||||
painter.setBrush(Qt.BrushStyle.NoBrush)
|
||||
|
||||
Reference in New Issue
Block a user