diff --git a/main.py b/main.py index 8e94001..ad3806b 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,8 @@ import sys import os +import webbrowser +from collections import namedtuple + from pandas import read_csv from PyQt5.QtWidgets import (QMainWindow, QApplication, @@ -8,7 +11,6 @@ from PyQt5.QtWidgets import (QMainWindow, from PyQt5.QtGui import QPixmap from PyQt5 import uic from PyQt5.QtCore import QFileInfo, QSize -import webbrowser from audio_player import AudioPlayer @@ -17,6 +19,20 @@ qt_creator_file = "main_window.ui" Ui_MainWindow, _ = uic.loadUiType(qt_creator_file) class MyApp(QMainWindow, Ui_MainWindow): + Band = namedtuple("Band", ["lower", "upper"]) + ELF = Band(3, 30) + SLF = Band(30, 300) + ULF = Band(300, 3000) + VLF = Band(3000, 30000) + LF = Band(30 * 10**3, 300 * 10**3) + MF = Band(300 * 10 ** 3, 3000 * 10**3) + HF = Band(3 * 10**6, 30 * 10**6) + VHF = Band(30 * 10**6, 300 * 10**6) + UHF = Band(300 * 10**6, 3000 * 10**6) + SHF = Band(3 * 10**9, 30 * 10**9) + EHF = Band(30 * 10**9, 300 * 10**9) + bands = ELF, SLF, ULF, VLF, LF, MF, HF, VHF, UHF, SHF, EHF + def __init__(self): super().__init__() self.setupUi(self) @@ -64,6 +80,20 @@ class MyApp(QMainWindow, Ui_MainWindow): self.volume, self.audio_progress) + self.band_labels = [ + [self.elf, self.elf_s1, self.elf_s2], + [self.slf, self.slf_s1, self.slf_s2], + [self.ulf, self.ulf_s1, self.ulf_s2], + [self.vlf, self.vlf_s1, self.vlf_s2], + [self.lf , self.lf_s1 , self.lf_s2], + [self.mf , self.mf_s1 , self.mf_s2], + [self.hf , self.hf_s1 , self.hf_s2], + [self.vhf, self.vhf_s1, self.vhf_s2], + [self.uhf, self.uhf_s1, self.uhf_s2], + [self.shf, self.shf_s1, self.shf_s2], + [self.ehf, None, None], + ] + def load_db(self): try: self.db = read_csv(os.path.join('Data', 'db.csv'), @@ -137,6 +167,7 @@ class MyApp(QMainWindow, Ui_MainWindow): words = self.current_signal_name self.name_lab.setText(words) current_signal = self.db.loc[self.current_signal_name] + print(current_signal.loc["inf_band"], current_signal.loc["sup_band"]) category_code = current_signal.loc["category_code"] self.freq_lab.setText(self.format_numbers( current_signal.loc["inf_freq"], @@ -156,6 +187,7 @@ class MyApp(QMainWindow, Ui_MainWindow): cat_lab.setStyleSheet("color: #9f9f9f;") elif cat == '1': cat_lab.setStyleSheet("color: #39eaff;") + self.set_band_range(current_signal) self.audio_widget.set_audio_player(self.current_signal_name) else: self.url_button.setEnabled(False) @@ -165,6 +197,7 @@ class MyApp(QMainWindow, Ui_MainWindow): lab.setText("N/A") for lab in self.category_labels: lab.setStyleSheet("""color: #9f9f9f;""") + self.set_band_range() self.audio_widget.set_audio_player() @classmethod @@ -204,6 +237,30 @@ class MyApp(QMainWindow, Ui_MainWindow): path_spectr = default_pic self.spectrogram.setPixmap(QPixmap(path_spectr)) + def set_band_range(self, current_signal = None): + # How to deal with one-frequency signals? + if current_signal is not None: + inf_band = int(current_signal.loc["inf_freq"]) + sup_band = int(current_signal.loc["sup_freq"]) + for band, band_label in zip(self.bands, self.band_labels): + delta = (band.upper - band.lower) // 2 + band.lower + if inf_band <= band.lower and sup_band > band.lower: + band_label[0].setStyleSheet("color: #39eaff;") + else: + band_label[0].setStyleSheet("color: #9f9f9f;") + if band_label[1]: + if inf_band <= delta and sup_band >= delta: + band_label[1].setStyleSheet("color: #39eaff;") + else: + band_label[1].setStyleSheet("color: #9f9f9f;") + if band_label[2]: + if inf_band <= band.upper and sup_band > band.upper: + band_label[2].setStyleSheet("color: #39eaff;") + else: + band_label[2].setStyleSheet("color: #9f9f9f;") + else: + [label.setStyleSheet("color: #9f9f9f;") for labels in self.band_labels for label in labels if label] + def go_to_web_page_signal(self): if self.current_signal_name: webbrowser.open(self.db.loc[self.current_signal_name].loc["url"]) diff --git a/main_window.ui b/main_window.ui index 42998b7..da6fde1 100644 --- a/main_window.ui +++ b/main_window.ui @@ -6,8 +6,8 @@ 0 0 - 1031 - 581 + 1169 + 626 @@ -120,6 +120,10 @@ QTextEdit{ QMessageBox { color: #ffffff; +} + +QToolTip { + color: #000000; } @@ -262,7 +266,7 @@ border-radius: 5px; QTabWidget::pane { /* The tab widget frame */ - border-left: 1px solid gray; + /* border-left: 1px solid gray;*/ } @@ -1197,7 +1201,7 @@ QTabBar::tab:!selected { - Go to the signal's wiki. + <html><head/><body><p><span style=" color:#000000;">Go to the signal's wiki.</span></p></body></html> color: #898989; @@ -1236,6 +1240,603 @@ QTabBar::tab:!selected { + + + + Frequency bands + + + color: #9f9f9f; + + + + 15 + + + + + + 9 + 75 + true + + + + ELF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + color: #9f9f9f; + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + color: #9f9f9f; + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + color: #9f9f9f; + + + SLF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + ULF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + VLF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + LF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + MF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + color: #9f9f9f; + + + HF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + VHF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + UHF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + SHF + + + Qt::AlignCenter + + + + + + + + + + 12 + 75 + true + + + + color: #9f9f9f; + + + + + + Qt::AlignCenter + + + + + + + + 12 + 75 + true + + + + + + + Qt::AlignCenter + + + + + + + + + + 9 + 75 + true + + + + EHF + + + Qt::AlignCenter + + + + + + @@ -1547,7 +2148,7 @@ QSlider::handle:horizontal { 0 0 - 1031 + 1169 21