Add urh
This commit is contained in:
@ -0,0 +1,88 @@
|
||||
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()
|
Reference in New Issue
Block a user