mirror of
https://github.com/nqrduck/nqrduck-spectrometer.git
synced 2024-11-09 12:30:01 +00:00
Implemented change of spectrometer.
This commit is contained in:
parent
a4431a087e
commit
35e1fd0e6c
4 changed files with 71 additions and 14 deletions
|
@ -7,7 +7,7 @@ class BaseSpectrometer(Module):
|
|||
super().__init__(model, None, controller)
|
||||
# This stops the view from being added to the main window.
|
||||
self._view = None
|
||||
self._inner_view = view
|
||||
self._inner_view = view(self)
|
||||
|
||||
@property
|
||||
def pulse_program(self):
|
||||
|
|
|
@ -1,9 +1,34 @@
|
|||
import logging
|
||||
from nqrduck.module.module_controller import ModuleController
|
||||
from nqrduck.core.main_controller import MainController
|
||||
from nqrduck_spectrometer.base_spectrometer import BaseSpectrometer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class SpectrometerController(ModuleController):
|
||||
def __init__(self, module):
|
||||
super().__init__(module)
|
||||
|
||||
def _load_spectrometer_modules(self):
|
||||
pass
|
||||
# Get the modules with entry points in the nqrduck group
|
||||
modules = MainController._get_modules()
|
||||
logger.debug("Found modules: %s", modules)
|
||||
|
||||
for module_name, module in modules.items():
|
||||
# Check if the module instance is a spectrometer by checking if it inherits from BaseSpectrometer
|
||||
if not issubclass(type(module), BaseSpectrometer):
|
||||
logger.debug("Module is not a spectrometer: %s ... skipping", module_name)
|
||||
continue
|
||||
|
||||
# Import the module
|
||||
logger.debug("Loading spectromter module: %s", module_name)
|
||||
module.model.widget_changed.connect(self._module.view.on_spectrometer_widget_changed)
|
||||
logger.debug("Adding spectrometer to spectrometer model: %s", module_name)
|
||||
self._module.model.add_spectrometers(module_name, module)
|
||||
|
||||
self._module.view.create_menu_entry()
|
||||
|
||||
def on_loading(self):
|
||||
self._module.model.spectrometer_added.connect(self._module.view.on_spectrometer_added)
|
||||
self._module.model.active_spectrometer_changed.connect(self._module.view.on_active_spectrometer_changed)
|
||||
self._load_spectrometer_modules()
|
|
@ -1,17 +1,18 @@
|
|||
import logging
|
||||
from PyQt5.QtCore import pyqtSignal
|
||||
from nqrduck.module.module_model import ModuleModel
|
||||
from .base_spectrometer import BaseSpectrometer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class SpectrometerModel(ModuleModel):
|
||||
spectrometer_changed = pyqtSignal()
|
||||
spectrometer_added = pyqtSignal(BaseSpectrometer)
|
||||
active_spectrometer_changed = pyqtSignal(BaseSpectrometer)
|
||||
|
||||
def __init__(self, module) -> None:
|
||||
super().__init__(module)
|
||||
self._active_spectrometer = None
|
||||
self._available_spectrometers = []
|
||||
self._load_available_spectrometers()
|
||||
self._available_spectrometers = dict()
|
||||
|
||||
@property
|
||||
def active_spectrometer(self):
|
||||
|
@ -20,17 +21,15 @@ class SpectrometerModel(ModuleModel):
|
|||
@active_spectrometer.setter
|
||||
def active_spectrometer(self, value):
|
||||
self._active_spectrometer = value
|
||||
self.spectrometer_changed.emit()
|
||||
self.active_spectrometer_changed.emit(value)
|
||||
|
||||
@property
|
||||
def available_spectrometers(self):
|
||||
return self._available_spectrometers
|
||||
|
||||
def _load_available_spectrometers(self):
|
||||
pass
|
||||
|
||||
|
||||
def _load_spectrometer(self, spectrometer_module_name):
|
||||
pass
|
||||
def add_spectrometers(self, spectrometer_module_name, module):
|
||||
self._available_spectrometers [spectrometer_module_name] = module
|
||||
logger.debug("Added module: %s", spectrometer_module_name)
|
||||
self.spectrometer_added.emit(module)
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
from PyQt5.QtWidgets import QWidget
|
||||
import logging
|
||||
from PyQt5.QtWidgets import QWidget, QToolButton, QToolBar, QAction, QMenu
|
||||
from nqrduck.module.module_view import ModuleView
|
||||
from .widget import Ui_Form
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class SpectrometerView(ModuleView):
|
||||
def __init__(self, module):
|
||||
|
@ -9,5 +11,36 @@ class SpectrometerView(ModuleView):
|
|||
|
||||
widget = QWidget()
|
||||
self._ui_form = Ui_Form()
|
||||
self._ui_form.setupUi(self)
|
||||
self.widget = widget
|
||||
self._ui_form.setupUi(self)
|
||||
|
||||
def on_active_spectrometer_changed(self, module):
|
||||
self._ui_form.stackedWidget.setCurrentWidget(module._inner_view)
|
||||
|
||||
def on_spectrometer_widget_changed(self, widget):
|
||||
logger.debug("Adding module widget to stacked widget: %s", widget)
|
||||
self._ui_form.stackedWidget.addWidget(widget)
|
||||
self._ui_form.stackedWidget.setCurrentWidget(widget)
|
||||
|
||||
|
||||
def on_spectrometer_added(self, module):
|
||||
"""This method changes the active spectrometer to the one that was just added."""
|
||||
self.on_spectrometer_widget_changed(module._inner_view)
|
||||
|
||||
def create_menu_entry(self):
|
||||
logger.debug("Creating menu entry for spectrometer module")
|
||||
menu_item = QMenu("Hardware")
|
||||
logger.debug("Available spectrometer models: %s", self._module.model._available_spectrometers)
|
||||
|
||||
actions = []
|
||||
for spectrometer_name, spectrometer_module in self._module.model._available_spectrometers.items():
|
||||
logger.debug("Adding module to menu: %s", spectrometer_name)
|
||||
select_action = QAction(spectrometer_module.model.toolbar_name, menu_item)
|
||||
select_action.triggered.connect(lambda: self.on_menu_button_clicked(spectrometer_name))
|
||||
actions.append(select_action)
|
||||
|
||||
self.add_menubar_item.emit("Hardware", actions)
|
||||
|
||||
def on_menu_button_clicked(self, spectrometer_name):
|
||||
logger.debug("Active module changed to: %s", spectrometer_name)
|
||||
self._module.model.active_spectrometer = self._module.model.available_spectrometers[spectrometer_name]
|
||||
|
|
Loading…
Reference in a new issue