112 lines
5.2 KiB
Python
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) |