diff --git a/artemis.py b/artemis.py
index 759d21c..cf9cb99 100644
--- a/artemis.py
+++ b/artemis.py
@@ -26,7 +26,7 @@ from audio_player import AudioPlayer
from double_text_button import DoubleTextButton
from download_window import DownloadWindow
-
+from switchable_label import SwitchableLabel, SwitchableLabelIterable
from constants import (Constants,
Ftype,
GfdType,
@@ -35,7 +35,6 @@ from constants import (Constants,
Messages,
Signal,)
from themes import Theme
-
from utilities import (checksum_ok,
uncheck_and_emit,
pop_up,
diff --git a/artemis.ui b/artemis.ui
index 07569d2..61e4b3d 100644
--- a/artemis.ui
+++ b/artemis.ui
@@ -7,7 +7,7 @@
0
0
1206
- 634
+ 674
@@ -178,7 +178,7 @@
QTabWidget::Rounded
- 0
+ 3
true
@@ -4592,6 +4592,802 @@ www.qrg.globaltuners.com
+
+
+ Rx/Tx Conditions
+
+
+ -
+
+
+
+ Now
+
+
+
-
+
+
-
+
+
+
-
+
+
+
+ 9
+ 75
+ true
+ true
+
+
+
+ X-Rays
+
+
+
+ -
+
+
-
+
+
+ Radio Blackout
+
+
+
+ -
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ R0
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ R1
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ R2
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ R3
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ R4
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ R5
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 9
+ 75
+ true
+ true
+
+
+
+ Protons-Electrons Flux
+
+
+
+ -
+
+
-
+
+
+ Solar Radiation Storm
+
+
+
+ -
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ S0
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ S1
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ S2
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ S3
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ S4
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ S5
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 9
+ 75
+ true
+ true
+
+
+
+ Solar Activity
+
+
+
+ -
+
+
-
+
+
+ K-Index
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+ A-Index
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
-
+
+
+
+ 7
+
+
+
+ EXTREMELY SEVERE
+STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ VERY SEVERE STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ SEVERE STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ MAJOR STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ MINOR STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ ACTIVE
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ UNSETTLED
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ QUIET
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ VERY QUIET
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ INACTIVE
+
+
+
+
+
+
+ -
+
+
+
-
+
+
+
+ 7
+
+
+
+ SEVERE STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ MAJOR STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ MINOR STORM
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ ACTIVE
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ UNSETTLED
+
+
+
+ -
+
+
+
+ 7
+
+
+
+ QUIET
+
+
+
+
+
+
+ -
+
+
-
+
+
+ SFI
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
-
+
+
+ SN
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+ Geomagnetic Storm (now)
+
+
+
+ -
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ G0
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G1
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G2
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G3
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G4
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G5
+
+
+
+
+
+
+ -
+
+
+ Geomagnetic Storm (MAX 24 hrs)
+
+
+
+ -
+
+
+
-
+
+
+
+ 75
+ true
+
+
+
+ G0
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G1
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G2
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G3
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G4
+
+
+
+ -
+
+
+
+ 75
+ true
+
+
+
+ G5
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Peak Flux Class
+
+
+
+ -
+
+
+ -
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
+ -
+
+
+
-
+
+
+
+ 15
+ 75
+ true
+ true
+
+
+
+ Protons-Electrons Flux
+
+
+
+
+
+
+
+
+ -
+
+
+ Info
+
+
+
+ -
+
+
+ Update
+
+
+
+ -
+
+
+ 1
+
+
+ -1
+
+
+ false
+
+
+
+
+
+
+
+ Tab 2
+
+
+
+
+
+
@@ -4908,6 +5704,11 @@ QSlider::handle:horizontal {
QPushButton
+
+ SwitchableLabel
+ QLabel
+
+
diff --git a/forecast_data.py b/forecast_data.py
new file mode 100644
index 0000000..5be58b6
--- /dev/null
+++ b/forecast_data.py
@@ -0,0 +1,44 @@
+from PyQt5.QtCore import pyqtSlot, pyqtSignal, QObject
+
+from threads import UpadteForecastThread, ThreadStatus
+from utilities import double_split
+
+class ForecastData(QObject):
+ update_complete = pyqtSignal(bool)
+
+ def __init__(self):
+ super().__init__()
+ self.xray = ''
+ self.prot_el = ''
+ self.ak_index = ''
+ self.sgas = ''
+ self.geo_storm = ''
+ self.__update_thread = UpadteForecastThread(self)
+ self.__update_thread.finished.connect(self.__parse_and_emit_signal)
+
+ @pyqtSlot()
+ def update(self):
+ self.__update_thread.start()
+
+ def __parse_data(self):
+ self.xray = double_split(str(self.xray))
+ self.prot_el = double_split(str(self.prot_el))
+ self.ak_index = double_split(str(self.ak_index))
+ self.sgas = double_split(str(self.sgas))
+ self.geo_storm = double_split(str(self.geo_storm))
+
+ def remove_data(self):
+ self.xray = ''
+ self.prot_el = ''
+ self.ak_index = ''
+ self.sgas = ''
+ self.geo_storm = ''
+
+ @pyqtSlot()
+ def __parse_and_emit_signal(self):
+ if self.__update_thread.status != ThreadStatus.OK:
+ status_ok = False
+ else:
+ status_ok = True
+ self.__parse_data()
+ self.update_complete.emit(status_ok)
diff --git a/icons_imgs/search_icon.png b/icons_imgs/search_icon.png
deleted file mode 100644
index cc72a1e..0000000
Binary files a/icons_imgs/search_icon.png and /dev/null differ
diff --git a/icons_imgs/volume.png b/icons_imgs/volume.png
deleted file mode 100644
index 5cc5645..0000000
Binary files a/icons_imgs/volume.png and /dev/null differ
diff --git a/main_window.ui b/main_window.ui
deleted file mode 100644
index 21be4d1..0000000
--- a/main_window.ui
+++ /dev/null
@@ -1,4916 +0,0 @@
-
-
- MainWindow
-
-
-
- 0
- 0
- 1206
- 634
-
-
-
-
- 0
- 0
-
-
-
- ARTEMIS3
-
-
-
- :/icons/Artemis3.ico:/icons/Artemis3.ico
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 20
- 20
-
-
-
-
- 20
- 20
-
-
-
-
-
-
- themes/1-default/icons/search_icon.png
-
-
- true
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 9
- 50
- false
-
-
-
-
-
-
-
-
-
- Qt::ScrollBarAsNeeded
-
-
- Qt::ScrollBarAsNeeded
-
-
- 16
-
-
- false
-
-
-
-
-
-
-
- true
-
-
-
- 1
- 0
-
-
-
-
- 200
- 400
-
-
-
- Qt::LeftToRight
-
-
-
-
-
- QTabWidget::North
-
-
- QTabWidget::Rounded
-
-
- 0
-
-
- true
-
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
- Main
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 20
- 75
- true
-
-
-
- QFrame::NoFrame
-
-
- Qt::ScrollBarAlwaysOff
-
-
- Qt::ScrollBarAlwaysOff
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:20pt; font-weight:600; font-style:normal;">
-<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">No Signal</p></body></html>
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 12
-
-
-
- N/A
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
-
-
-
- N/A
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Mode
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
-
-
-
- N/A
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
-
-
-
- N/A
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Frequency
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
-
-
-
- N/A
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Modulation
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Location
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
-
-
-
- N/A
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Bandwidth
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- ACF
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Categories
-
-
- Qt::AlignBottom|Qt::AlignHCenter
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Military
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Radar
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Active
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Inactive
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- HAM
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Commercial
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Aviation
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Marine
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Analogue
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Digital
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Trunked
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Utility
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Sat
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Navigation
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Interfering
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Time Signal
-
-
- Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 10
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- Number Stations
-
-
- Qt::AlignCenter
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
- true
-
-
-
- <html><head/><body><p><span style=" color:#000000;">Go to the signal's wiki.</span></p></body></html>
-
-
-
-
-
- Signal's wiki
-
-
- true
-
-
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Description
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 11
-
-
-
- border: 0px;
-/*border-radius: 8px;*/
-
-
- Qt::ScrollBarAsNeeded
-
-
- Qt::ScrollBarAsNeeded
-
-
- true
-
-
-
- -
-
-
- <html><head/><body><p><span style=" color:#000000;">Frequency bands</span></p></body></html>
-
-
- color: #9f9f9f;
-
-
-
-
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- â–ˆ
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 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
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- color: #9f9f9f;
-
-
- â–ˆ
-
-
- Qt::AlignCenter
-
-
-
-
-
-
-
-
-
-
-
-
- Filters
-
-
- -
-
-
-
-
-
- 0
-
-
- true
-
-
-
- Frequency
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- ELF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- SLF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- ULF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- VLF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- LF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- MF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- HF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- VHF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- UHF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- SHF
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- EHF
-
-
- true
-
-
- false
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 24
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- Lower frequency
-
-
- false
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1
-
-
- 100000000
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
- 12
- 75
- true
-
-
-
-
-
-
- MHz
-
-
- 4
-
-
- false
-
-
- 0
-
-
-
-
- MHz
-
-
- -
-
- Hz
-
-
- -
-
- kHz
-
-
- -
-
- GHz
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Confidence %
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 50
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- false
-
-
- Qt::AlignCenter
-
-
- QAbstractSpinBox::UpDownArrows
-
-
-
-
-
- 100
-
-
- 0
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Upper frequency
-
-
- false
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1
-
-
- 100000000
-
-
- 1
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
- 12
- 75
- true
-
-
-
-
-
-
- MHz
-
-
-
-
- MHz
-
-
- -
-
- Hz
-
-
- -
-
- kHz
-
-
- -
-
- GHz
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Confidence %
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 50
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- false
-
-
- Qt::AlignCenter
-
-
- QAbstractSpinBox::UpDownArrows
-
-
-
-
-
- 100
-
-
- 0
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- false
- true
- false
-
-
-
- color: #9f9f9f;
-
-
- Selected range:
-
-Inactive
-
-
- Qt::AlignCenter
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 24
- 20
-
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Include undefined frequencies
-
-
- true
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- Apply
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Reset
-
-
-
-
-
-
-
- Bandwidth
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 44
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1
-
-
- 100000000
-
-
- 5000
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1
-
-
- 100000000
-
-
- 5000
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Upper band
-
-
- false
-
-
-
- -
-
-
- 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
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
- 12
- 75
- true
-
-
-
-
-
-
- MHz
-
-
- 4
-
-
- false
-
-
- 0
-
-
-
-
- MHz
-
-
- -
-
- Hz
-
-
- -
-
- kHz
-
-
- -
-
- GHz
-
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 50
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- false
-
-
- Qt::AlignCenter
-
-
- QAbstractSpinBox::UpDownArrows
-
-
-
-
-
- 100
-
-
- 0
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
- 12
- 75
- true
-
-
-
-
-
-
- MHz
-
-
-
-
- MHz
-
-
- -
-
- Hz
-
-
- -
-
- kHz
-
-
- -
-
- GHz
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Confidence %
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Lower band
-
-
- false
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- false
- true
- false
-
-
-
-
-
-
- Selected range:
-
-Inactive
-
-
- Qt::AlignCenter
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 44
- 20
-
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- Apply
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Reset
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Include undefined bandwidths
-
-
- true
-
-
-
-
-
-
-
- Category
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 102
- 20
-
-
-
-
- -
-
-
-
- 50
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- <html><head/><body><p>Keep all the signals which belong to <span style=" font-style:italic;">at least</span> one of the selected categories.</p></body></html>
-
-
-
-
-
- At least one selected
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- <html><head/><body><p>Keep all the signals which belong to <span style=" font-style:italic;">all </span>the selected categories.</p></body></html>
-
-
- All selected
-
-
- false
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 102
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- Number Stations
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Time Signal
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Interfering
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Satellite
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Navigation
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Utility
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Digital
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Marine
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Commercial
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Inactive
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Radar
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Military
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Active
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- HAM
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Aviation
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Analogue
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Trunked
-
-
- true
-
-
-
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- Apply
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Reset
-
-
-
-
-
-
-
- Mode
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 171
- 20
-
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- QAbstractItemView::NoEditTriggers
-
-
- QAbstractItemView::MultiSelection
-
-
- QAbstractItemView::SelectItems
-
-
- true
-
-
- true
-
-
- 1
-
-
-
- 1
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 170
- 20
-
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Apply
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Reset
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Include unknown modulations
-
-
- true
-
-
-
-
-
-
-
- Modulation
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 162
- 20
-
-
-
-
- -
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 20
- 20
-
-
-
-
- 20
- 20
-
-
-
-
-
-
- icons_imgs/search_icon.png
-
-
- true
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 12
- 50
- false
-
-
-
- QAbstractItemView::NoEditTriggers
-
-
- QAbstractItemView::MultiSelection
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 161
- 20
-
-
-
-
- -
-
-
- true
-
-
-
- 12
- 75
- true
-
-
-
- Apply
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Reset
-
-
-
-
-
-
-
- Location
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 162
- 20
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 20
- 20
-
-
-
-
-
-
- icons_imgs/search_icon.png
-
-
- true
-
-
-
- -
-
-
-
- 12
-
-
-
- QAbstractItemView::MultiSelection
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 161
- 20
-
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Apply
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Reset
-
-
- false
-
-
-
-
-
-
-
- ACF
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 52
- 22
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- AC interval
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 80
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1
-
-
- 10000
-
-
- 50
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- ms
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 49
- 20
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- true
-
-
-
- Confidence %
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 50
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- false
-
-
- Qt::AlignCenter
-
-
- QAbstractSpinBox::UpDownArrows
-
-
-
-
-
- 100
-
-
- 0
-
-
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 12
- 75
- false
- true
- false
-
-
-
-
-
-
- Selected range:
-
-Inactive
-
-
- Qt::AlignCenter
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 51
- 20
-
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Include undefined ACFs
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Apply
-
-
- true
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Reset
-
-
- false
-
-
-
- -
-
-
-
- 12
- 75
- true
-
-
-
- Info
-
-
-
-
-
-
-
- -
-
-
- true
-
-
-
- 15
- 75
- true
-
-
-
-
-
-
- Reset all filters
-
-
-
-
-
-
-
- GFD
-
-
- -
-
-
-
-
-
-
- 20
- 75
- true
-
-
-
- Search on Global Frequencies Database
-
-www.qrg.globaltuners.com
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Minimum
-
-
-
- 20
- 100
-
-
-
-
- -
-
-
-
- 15
- 75
- true
-
-
-
- Search by
-
-
- Qt::AlignCenter
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Minimum
-
-
-
- 20
- 80
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 37
- 20
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- Frequency
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Minimum
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
-
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 100
- 0
-
-
-
-
- 100
- 16777215
-
-
-
-
- 12
-
-
-
-
-
-
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
-
-
- 1
-
-
- 100000000
-
-
- 100
-
-
-
- -
-
-
- true
-
-
-
- 0
- 0
-
-
-
-
- 60
- 0
-
-
-
-
- 16777215
- 16777215
-
-
-
-
- 12
- 75
- true
-
-
-
-
-
-
- MHz
-
-
- 4
-
-
- false
-
-
- 0
-
-
-
-
- MHz
-
-
- -
-
- Hz
-
-
- -
-
- kHz
-
-
- -
-
- GHz
-
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::MinimumExpanding
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
-
- 15
- 75
- true
-
-
-
- Search
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
-
-
-
- 12
- 75
- true
-
-
-
- Location/Callsign
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Minimum
-
-
-
- 20
- 40
-
-
-
-
- -
-
-
-
- 12
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::MinimumExpanding
-
-
-
- 20
- 20
-
-
-
-
- -
-
-
-
- 15
- 75
- true
-
-
-
- Search
-
-
-
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 37
- 20
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 34
-
-
-
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 270
- 0
-
-
-
-
- 270
- 575
-
-
-
-
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
-QWidget {
- border: 0px;
-}
-QPushButton {
- border: 0px solid gray;
- border-color: #1d5eff;
- border-radius: 20px;
-}
-
-
-
-
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 16777215
- 10
-
-
-
-
-
-
- 0
-
-
- false
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 70
- 70
-
-
-
-
-
-
- false
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 70
- 70
-
-
-
-
-
-
- false
-
-
-
- -
-
-
- false
-
-
-
- 0
- 0
-
-
-
-
- 70
- 70
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 20
- 20
-
-
-
-
-
-
- themes/1-default/icons/volume.png
-
-
- true
-
-
-
- -
-
-
- QSlider::groove:horizontal {
- /*border: 1px solid #999999;*/
- height: 6px; /* the groove expands to the size of the slider by default. by giving it a height, it has a fixed size */
- background: #7a7a7a;
- margin: 0 5px;
- border-radius: 3px
-}
-
-QSlider::handle:horizontal {
- background: qlineargradient(x1:0, y1:0, x2:1, y2:1, stop:0 gray, stop:0.5 white, stop:1.0 gray);
- border: 1px solid #5c5c5c;
- width: 15px;
- margin: -5px -5px; /* handle is placed by default on the contents rect of the groove. Expand outside the groove */
- border-radius: 8px;
-}
-
-
-
- 0
-
-
- 100
-
-
- 10
-
-
- 50
-
-
- Qt::Horizontal
-
-
-
-
-
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
-
- 250
- 417
-
-
-
- Signal waterfall
-
-
-
-
-
-
-
-
- themes/1-system/icons/nosignalselected.png
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
- color: rgb(255, 255, 255);
-
-
-
-
- Exit
-
-
-
-
- Update database
-
-
-
-
- Check latest database version
-
-
-
-
-
- DoubleTextButton
- QPushButton
-
-
-
-
-
-
-
-
diff --git a/switchable_label.py b/switchable_label.py
new file mode 100644
index 0000000..44b9207
--- /dev/null
+++ b/switchable_label.py
@@ -0,0 +1,37 @@
+from PyQt5.QtWidgets import QLabel
+
+class SwitchableLabel(QLabel):
+ def __init__(self, parent = None):
+ super().__init__(parent)
+ self.switch_on_color = None
+ self.switch_off_color = None
+
+ def set_colors(self, on, off):
+ self.switch_on_color = on
+ self.switch_off_color = off
+
+ def switch_on(self):
+ self.setStyleSheet(f"background-color: {self.switch_on_color}")
+
+ def switch_off(self):
+ self.setStyleSheet(f"background-color: {self.switch_off_color}")
+
+
+class SwitchableLabelIterable(object):
+ def __init__(self, *labels):
+ self.labels = labels
+
+ def __iter__(self):
+ for lab in self.labels:
+ yield lab
+
+ def switch_on(label):
+ for lab in self.labels:
+ if lab == label:
+ lab.switch_on()
+ else:
+ lab.switch_off()
+
+ def switch_off_all(self):
+ for lab in self.labels:
+ lab.switch_off()
diff --git a/threads.py b/threads.py
index d18ce53..fa36d01 100644
--- a/threads.py
+++ b/threads.py
@@ -33,8 +33,6 @@ class DownloadThread(QThread):
def run(self):
try:
db = urllib3.PoolManager().request('GET', Database.LINK_LOC)
- # db = urllib.request.urlopen(constants.Database.LINK_LOC)
- # raise urllib.error.URLError('Test')
except urllib3.exceptions.MaxRetryError: # No internet connection.
self.__status = ThreadStatus.NO_CONNECTION_ERR
return
@@ -54,7 +52,6 @@ class DownloadThread(QThread):
if os.path.exists(Constants.DATA_FOLDER):
rmtree(Constants.DATA_FOLDER)
try:
- # data_folder = db.read()
with ZipFile(BytesIO(db.data)) as zipped:
zipped.extractall()
except: