88 lines
3.6 KiB
Python
88 lines
3.6 KiB
Python
from PyQt5.QtCore import pyqtSlot
|
|
from PyQt5.QtWidgets import QWidget
|
|
|
|
from urh import settings
|
|
from urh.controller.dialogs.ModulatorDialog import ModulatorDialog
|
|
from urh.signalprocessing.Modulator import Modulator
|
|
from urh.ui.ui_modulation_settings_widget import Ui_ModulationSettings
|
|
|
|
|
|
class ModulationSettingsWidget(QWidget):
|
|
def __init__(self, modulators, selected_index=0, signal_tree_model=None, parent=None):
|
|
"""
|
|
|
|
:type modulators: list of Modulator
|
|
:param parent:
|
|
"""
|
|
super().__init__(parent)
|
|
self.ui = Ui_ModulationSettings()
|
|
self.ui.setupUi(self)
|
|
|
|
self.ui.labelModulationProfile.setVisible(settings.read("multiple_modulations", False, bool))
|
|
self.ui.comboBoxModulationProfiles.setVisible(settings.read("multiple_modulations", False, bool))
|
|
|
|
self.signal_tree_model = signal_tree_model
|
|
self.modulators = modulators # type: list[Modulator]
|
|
for modulator in self.modulators:
|
|
self.ui.comboBoxModulationProfiles.addItem(modulator.name)
|
|
|
|
self.ui.comboBoxModulationProfiles.setCurrentIndex(selected_index)
|
|
|
|
self.show_selected_modulation_infos()
|
|
self.create_connects()
|
|
|
|
@property
|
|
def selected_modulator(self) -> Modulator:
|
|
return self.modulators[self.ui.comboBoxModulationProfiles.currentIndex()]
|
|
|
|
@selected_modulator.setter
|
|
def selected_modulator(self, value: Modulator):
|
|
if value in self.modulators:
|
|
self.ui.comboBoxModulationProfiles.setCurrentIndex(self.modulators.index(value))
|
|
|
|
def create_connects(self):
|
|
self.ui.comboBoxModulationProfiles.currentIndexChanged.connect(self.on_cb_modulation_type_current_index_changed)
|
|
self.ui.btnConfigurationDialog.clicked.connect(self.on_btn_configuration_dialog_clicked)
|
|
|
|
def show_selected_modulation_infos(self):
|
|
modulator = self.selected_modulator
|
|
self.ui.labelCarrierFrequencyValue.setText(modulator.carrier_frequency_str)
|
|
self.ui.labelSamplesPerSymbolValue.setText(modulator.samples_per_symbol_str)
|
|
self.ui.labelSampleRateValue.setText(modulator.sample_rate_str)
|
|
self.ui.labelModulationTypeValue.setText(modulator.modulation_type_verbose)
|
|
|
|
self.ui.labelParameters.setText(modulator.parameter_type_str)
|
|
self.ui.labelParameterValues.setText(modulator.parameters_string)
|
|
self.ui.labelBitsPerSymbol.setText(str(modulator.bits_per_symbol))
|
|
|
|
@pyqtSlot()
|
|
def on_cb_modulation_type_current_index_changed(self):
|
|
self.show_selected_modulation_infos()
|
|
|
|
@pyqtSlot()
|
|
def on_btn_configuration_dialog_clicked(self):
|
|
dialog = ModulatorDialog(self.modulators, tree_model=self.signal_tree_model, parent=self)
|
|
dialog.ui.comboBoxCustomModulations.setCurrentIndex(self.ui.comboBoxModulationProfiles.currentIndex())
|
|
dialog.finished.connect(self.refresh_modulators_from_dialog)
|
|
dialog.show()
|
|
dialog.initialize("10101011010010")
|
|
|
|
@pyqtSlot()
|
|
def refresh_modulators_from_dialog(self):
|
|
current_index = 0
|
|
if type(self.sender()) == ModulatorDialog:
|
|
current_index = self.sender().ui.comboBoxCustomModulations.currentIndex()
|
|
|
|
self.ui.comboBoxModulationProfiles.clear()
|
|
for modulator in self.modulators:
|
|
self.ui.comboBoxModulationProfiles.addItem(modulator.name)
|
|
|
|
self.ui.comboBoxModulationProfiles.setCurrentIndex(current_index)
|
|
self.show_selected_modulation_infos()
|
|
|
|
if __name__ == '__main__':
|
|
from PyQt5.QtWidgets import QApplication
|
|
app = QApplication([""])
|
|
w = ModulationSettingsWidget([Modulator("test")])
|
|
w.show()
|
|
app.exec() |