diff --git a/double_text_button.py b/double_text_button.py
index d92ae0f..050b110 100644
--- a/double_text_button.py
+++ b/double_text_button.py
@@ -4,22 +4,39 @@ from PyQt5.QtCore import pyqtSlot
class DoubleTextButton(QPushButton):
def __init__(self, parent = None):
super().__init__(parent)
- self.clicked.connect(self.manage_click)
+ self.clicked.connect(self.__manage_click)
def set_texts(self, text_a, text_b):
- self.text_a = text_a
- self.text_b = text_b
+ self.__text_a = text_a
+ self.__text_b = text_b
- def set_slave_filters(self, *filters):
- self.filters = filters
+ def set_slave_filters(self, simple_ones,
+ radio_1 = None,
+ ruled_by_radio_1 = None,
+ radio_2 = None,
+ ruled_by_radio_2 = None):
+ self.__simple_ones = simple_ones
+ self.__ruled_by_radio_1 = ruled_by_radio_1
+ self.__radio_1 = radio_1
+ self.__ruled_by_radio_2 = ruled_by_radio_2
+ self.__radio_2 = radio_2
@pyqtSlot()
- def manage_click(self):
+ def __manage_click(self):
if self.isChecked():
- self.setText(self.text_b)
+ self.setText(self.__text_b)
enable = False
else:
- self.setText(self.text_a)
+ self.setText(self.__text_a)
enable = True
- for f in self.filters:
+ for f in self.__simple_ones:
f.setEnabled(enable)
+ radio_btns = self.__radio_1, self.__radio_2
+ ruled_widgets = self.__ruled_by_radio_1, self.__ruled_by_radio_2
+ for radio_btn, ruled_by in zip(radio_btns, ruled_widgets):
+ if ruled_by:
+ for f in ruled_by:
+ if radio_btn.isChecked():
+ f.setEnabled(enable)
+ else:
+ f.setEnabled(False)
diff --git a/main.py b/main.py
index acc4ab0..310dd57 100644
--- a/main.py
+++ b/main.py
@@ -51,6 +51,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
self.db = None
self.current_signal_name = ''
self.signal_names = []
+ self.total_signals = 0
self.frequency_filters_btns = (
self.elf_filter_btn,
self.slf_filter_btn,
@@ -74,32 +75,56 @@ class MyApp(QMainWindow, Ui_MainWindow):
self.lower_freq_spinbox,
self.upper_freq_filter_unit,
self.upper_freq_spinbox)
- )
+ )
self.lower_freq_filter_unit.currentTextChanged.connect(
partial(self.set_min_value_upper_limit,
self.lower_freq_filter_unit,
self.lower_freq_spinbox,
self.upper_freq_filter_unit,
self.upper_freq_spinbox)
- )
+ )
self.upper_freq_filter_unit.currentTextChanged.connect(
partial(self.set_min_value_upper_limit,
self.lower_freq_filter_unit,
self.lower_freq_spinbox,
self.upper_freq_filter_unit,
self.upper_freq_spinbox)
- )
+ )
+
+ self.activate_low_freq_filter_btn.toggled.connect(
+ partial(self.activate_if_toggled,
+ self.activate_low_freq_filter_btn,
+ self.lower_freq_spinbox,
+ self.lower_freq_filter_unit,
+ self.lower_freq_confidence)
+ )
+
+ self.activate_up_freq_filter_btn.toggled.connect(
+ partial(self.activate_if_toggled,
+ self.activate_up_freq_filter_btn,
+ self.upper_freq_spinbox,
+ self.upper_freq_filter_unit,
+ self.upper_freq_confidence)
+ )
self.apply_remove_freq_filter_btn.set_texts("Apply", "Remove")
self.apply_remove_freq_filter_btn.set_slave_filters(
- *self.frequency_filters_btns,
- self.lower_freq_spinbox,
- self.upper_freq_spinbox,
- self.lower_freq_filter_unit,
- self.upper_freq_filter_unit,
- self.lower_freq_confidence,
- self.upper_freq_confidence,
- self.include_undef_freqs,
+ [
+ *self.frequency_filters_btns,
+ self.include_undef_freqs,
+ ],
+ self.activate_low_freq_filter_btn,
+ [
+ self.lower_freq_spinbox,
+ self.lower_freq_filter_unit,
+ self.lower_freq_confidence,
+ ],
+ self.activate_up_freq_filter_btn,
+ [
+ self.upper_freq_spinbox,
+ self.upper_freq_filter_unit,
+ self.upper_freq_confidence,
+ ],
)
self.apply_remove_freq_filter_btn.clicked.connect(self.display_signals)
self.reset_frequency_filters_btn.clicked.connect(self.reset_frequency_filters)
@@ -231,6 +256,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
box.show()
else:
self.signal_names = self.db.index
+ self.total_signals = len(self.signal_names)
self.db.fillna("N/A", inplace = True)
self.db["url_clicked"] = False
try:
@@ -243,9 +269,9 @@ class MyApp(QMainWindow, Ui_MainWindow):
"Possible data curruption.\n"
"Go to Updates->Force Download.")
box.show()
- self.setStatusTip("Database version: undefined.")
+ self.statusbar.showMessage("Database version: undefined.")
else:
- self.setStatusTip(f"Database version: {self.db_version}")
+ self.statusbar.showMessage(f"Database version: {self.db_version}")
@pyqtSlot()
def set_min_value_upper_limit(self, lower_combo_box,
@@ -274,19 +300,31 @@ class MyApp(QMainWindow, Ui_MainWindow):
self.lower_spin_box,
self.upper_combo_box,
self.upper_spin_box
- )
+ )
)
upper_spin_box.setValue(upper_spin_box.value() // (1000**counter))
if upper_spin_box.minimum() != inf_limit:
upper_spin_box.setMinimum(inf_limit)
+ @pyqtSlot()
+ def activate_if_toggled(self, radio_btn, *widgets):
+ toggled = True if radio_btn.isChecked() else False
+ for w in widgets[:-1]: # Neglect the bool coming from the emitted signal.
+ w.setEnabled(toggled)
+
@pyqtSlot()
def display_signals(self):
self.result_list.clear()
text = self.search_bar.text()
+ available_signals = 0
for signal in self.signal_names:
if text.lower() in signal.lower() and self.frequency_filters_ok(signal):
self.result_list.addItem(signal)
+ available_signals += 1
+ self.upadte_status_tip(available_signals)
+
+ def upadte_status_tip(self, available_signals):
+ self.statusbar.showMessage(f"Database version: {self.db_version}. {available_signals} out of {self.total_signals} signals displayed.")
@pyqtSlot()
def reset_frequency_filters(self):
@@ -298,12 +336,18 @@ class MyApp(QMainWindow, Ui_MainWindow):
f.setChecked(False)
if self.include_undef_freqs.isChecked():
self.include_undef_freqs.setChecked(False)
+ if self.activate_low_freq_filter_btn.isChecked():
+ self.activate_low_freq_filter_btn.setChecked(False)
+ self.activate_low_freq_filter_btn.clicked.emit()
+ if self.activate_up_freq_filter_btn.isChecked():
+ self.activate_up_freq_filter_btn.setChecked(False)
+ self.activate_up_freq_filter_btn.clicked.emit()
self.lower_freq_spinbox.setValue(0)
self.upper_freq_spinbox.setValue(0)
self.lower_freq_filter_unit.setCurrentText("MHz")
self.upper_freq_filter_unit.setCurrentText("MHz")
- self.lower_freq_confidence.setValue(5)
- self.upper_freq_confidence.setValue(5)
+ self.lower_freq_confidence.setValue(0)
+ self.upper_freq_confidence.setValue(0)
def frequency_filters_ok(self, signal_name):
if not self.apply_remove_freq_filter_btn.isChecked():
@@ -329,16 +373,16 @@ class MyApp(QMainWindow, Ui_MainWindow):
upper_freq_filter = self.upper_freq_spinbox.value()
lower_limit_ok = True
upper_limit_ok = True
- if lower_freq_filter > 0:
+ if self.activate_low_freq_filter_btn.isChecked():
lower_tol = self.lower_freq_confidence.value()
lower_limit = lower_freq_filter - lower_tol / 100 * lower_freq_filter
lower_units = self.lower_freq_filter_unit.currentText()
lower_limit *= self.conversion_factors[lower_units]
if not signal_freqs[1] >= lower_limit:
lower_limit_ok = False
- if upper_freq_filter > 0:
+ if self.activate_up_freq_filter_btn.isChecked():
upper_tol = self.upper_freq_confidence.value()
- upper_limit = upper_freq_filter + lower_tol / 100 * lower_freq_filter
+ upper_limit = upper_freq_filter + upper_tol / 100 * lower_freq_filter
upper_units = self.upper_freq_filter_unit.currentText()
upper_limit *= self.conversion_factors[upper_units]
if not signal_freqs[0] < upper_limit:
diff --git a/main_window.ui b/main_window.ui
index fc93f79..16ed255 100644
--- a/main_window.ui
+++ b/main_window.ui
@@ -130,6 +130,10 @@ QTextBrowser {
background-color: #464646;
color: #ffffff;
border: 0px;
+}
+
+QRadioButton {
+ color: #ffffff;
}
@@ -1979,23 +1983,6 @@ QPushButton:checked {
- -
-
-
-
- 10
- 75
- true
-
-
-
- Include undefined frequencies
-
-
- true
-
-
-
-
@@ -2237,6 +2224,23 @@ QPushButton:checked {
+ -
+
+
+
+ 10
+ 75
+ true
+
+
+
+ Include undefined frequencies
+
+
+ true
+
+
+
@@ -2258,257 +2262,10 @@ QPushButton:checked {
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Upper frequency
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1000000000
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
- 12
- 75
- true
-
-
-
- MHz
-
-
-
-
- MHz
-
-
- -
-
- Hz
-
-
- -
-
- kHz
-
-
- -
-
- GHz
-
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 50
- 16777215
-
-
-
-
- 12
-
-
-
- false
-
-
- Qt::AlignCenter
-
-
- QAbstractSpinBox::UpDownArrows
-
-
-
-
-
- 100
-
-
- 5
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Lower frequency
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Confidence %
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1000000000
-
-
- 0
-
-
-
-
- true
+ false
@@ -2569,33 +2326,10 @@ QPushButton:checked {
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Confidence %
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
-
- true
+ false
@@ -2636,7 +2370,265 @@ QPushButton:checked {
100
- 5
+ 0
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 0
+
+
+
+
+ 100
+ 16777215
+
+
+
+
+ 12
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 1000000000
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+
+ 100
+ 0
+
+
+
+
+ 100
+ 16777215
+
+
+
+
+ 12
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+ 1000000000
+
+
+ 0
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+
+ 60
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+
+ 12
+ 75
+ true
+
+
+
+ MHz
+
+
-
+
+ MHz
+
+
+ -
+
+ Hz
+
+
+ -
+
+ kHz
+
+
+ -
+
+ GHz
+
+
+
+
+ -
+
+
+ false
+
+
+
+ 0
+ 0
+
+
+
+
+ 60
+ 0
+
+
+
+
+ 50
+ 16777215
+
+
+
+
+ 12
+
+
+
+ false
+
+
+ Qt::AlignCenter
+
+
+ QAbstractSpinBox::UpDownArrows
+
+
+
+
+
+ 100
+
+
+ 0
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 12
+ 75
+ true
+
+
+
+ Confidence %
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 12
+ 75
+ true
+
+
+
+ Confidence %
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
+ -
+
+
+
+ 12
+ 75
+ true
+
+
+
+ Lower frequency
+
+
+ false
+
+
+
+ -
+
+
+
+ 12
+ 75
+ true
+
+
+
+ Upper frequency
+
+
+ false