Files
detektor/src/data_menu.py
2025-03-10 17:10:04 +01:00

112 lines
5.2 KiB
Python

from PyQt6.QtWidgets import QBoxLayout, QVBoxLayout, QGroupBox, QPushButton
from callbacks import CallbackDispatcher, CallbackType
from detektor_region import DetektorRegionState, DetektorRegion
from channel_calibration_dialog import ChannelCalibrationDialog
from change_start_dialog import ChangeStartDialog
from detektor_data import DetektorContainer
from moving_average_dialog import MovingAverageDialog
class DataMenu:
layout: QBoxLayout = None
region: DetektorRegion = None
def __init__(self, layout: QBoxLayout, region: DetektorRegion):
self.layout = layout
self.region = region
CallbackDispatcher().register(CallbackType.REGION_STATE, self.update_enabled)
CallbackDispatcher().register(CallbackType.DATA_PARSED, self.update_enabled)
CallbackDispatcher().register(CallbackType.DATA_NOT_PARSED, self.update_enabled)
data_menu_layout = QVBoxLayout()
chart_options_group = QGroupBox("Data")
chart_options_group.setLayout(data_menu_layout)
self.layout.addWidget(chart_options_group)
self.add_selection_button = QPushButton(f"Přidat výběr")
self.add_selection_button.clicked.connect(self.region.set)
data_menu_layout.addWidget(self.add_selection_button)
self.cancel_selection_button = QPushButton(f"Zrušit výběr")
self.cancel_selection_button.clicked.connect(self.region.unset)
data_menu_layout.addWidget(self.cancel_selection_button)
self.delete_selection_button = QPushButton(f"Smazat výběr")
self.delete_selection_button.clicked.connect(self.region.delete)
data_menu_layout.addWidget(self.delete_selection_button)
self.copy_selection_button = QPushButton(f"Kopírovat")
self.copy_selection_button.clicked.connect(self.region.copy)
data_menu_layout.addWidget(self.copy_selection_button)
self.cut_selection_button = QPushButton(f"Vyjmout")
self.cut_selection_button.clicked.connect(self.region.cut)
data_menu_layout.addWidget(self.cut_selection_button)
self.paste_selection_after_button = QPushButton(f"Vložit data za výběr")
self.paste_selection_after_button.clicked.connect(self.region.paste_after)
data_menu_layout.addWidget(self.paste_selection_after_button)
self.paste_selection_end_button = QPushButton(f"Vložit data na konec")
self.paste_selection_end_button.clicked.connect(self.region.paste_end)
data_menu_layout.addWidget(self.paste_selection_end_button)
self.change_start_button = QPushButton(f"Změnit datum a čas")
self.change_start_button.clicked.connect(self.open_change_start_dialog)
data_menu_layout.addWidget(self.change_start_button)
self.calibration_button = QPushButton(f"Kalibrovat data")
self.calibration_button.clicked.connect(self.open_calibration_dialog)
data_menu_layout.addWidget(self.calibration_button)
self.moving_average_button = QPushButton(f"Klouzavý průměr")
self.moving_average_button.clicked.connect(self.open_moving_average_dialog)
data_menu_layout.addWidget(self.moving_average_button)
self.update_enabled()
def open_change_start_dialog(self):
ChangeStartDialog()
def open_calibration_dialog(self):
ChannelCalibrationDialog(self.region)
def open_moving_average_dialog(self):
MovingAverageDialog()
def update_enabled(self):
if self.region.state == DetektorRegionState.UNSET:
self.add_selection_button.setEnabled(True)
self.cancel_selection_button.setEnabled(False)
self.delete_selection_button.setEnabled(False)
self.copy_selection_button.setEnabled(False)
self.cut_selection_button.setEnabled(False)
self.paste_selection_after_button.setEnabled(False)
self.paste_selection_end_button.setEnabled(False)
elif self.region.state == DetektorRegionState.SET:
self.add_selection_button.setEnabled(False)
self.cancel_selection_button.setEnabled(True)
self.delete_selection_button.setEnabled(True)
self.copy_selection_button.setEnabled(True)
self.cut_selection_button.setEnabled(True)
self.paste_selection_after_button.setEnabled(False)
self.paste_selection_end_button.setEnabled(False)
elif self.region.state == DetektorRegionState.COPIED:
self.add_selection_button.setEnabled(False)
self.cancel_selection_button.setEnabled(True)
self.delete_selection_button.setEnabled(True)
self.copy_selection_button.setEnabled(True)
self.cut_selection_button.setEnabled(True)
self.paste_selection_after_button.setEnabled(True)
self.paste_selection_end_button.setEnabled(True)
if DetektorContainer().get().file_path is None:
self.calibration_button.setEnabled(False)
self.moving_average_button.setEnabled(False)
self.change_start_button.setEnabled(False)
else:
self.calibration_button.setEnabled(True)
self.moving_average_button.setEnabled(True)
self.change_start_button.setEnabled(True)