Fix checksum_ok if no internet connection
This commit is contained in:
@@ -22,7 +22,7 @@ class Messages(object):
|
|||||||
NO_DB = "No database"
|
NO_DB = "No database"
|
||||||
DOWNLOAD_NOW_QUESTION = "Do you want to download it now?"
|
DOWNLOAD_NOW_QUESTION = "Do you want to download it now?"
|
||||||
DOWNLOAD_ANYWAY_QUESTION = "Do you want to download it anyway?"
|
DOWNLOAD_ANYWAY_QUESTION = "Do you want to download it anyway?"
|
||||||
NO_CONNECTION = "No internet connection"
|
NO_CONNECTION = "No connection"
|
||||||
NO_CONNECTION_MSG = "Unable to establish an internet connection."
|
NO_CONNECTION_MSG = "Unable to establish an internet connection."
|
||||||
BAD_DOWNLOAD = "Something went wrong"
|
BAD_DOWNLOAD = "Something went wrong"
|
||||||
BAD_DOWNLOAD_MSG = "Something went wrong with the downaload.\nCheck your internet connection and try again."
|
BAD_DOWNLOAD_MSG = "Something went wrong with the downaload.\nCheck your internet connection and try again."
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ from PyQt5 import uic
|
|||||||
from PyQt5.QtCore import Qt, pyqtSlot
|
from PyQt5.QtCore import Qt, pyqtSlot
|
||||||
from PyQt5.QtWidgets import QWidget
|
from PyQt5.QtWidgets import QWidget
|
||||||
from threads import DownloadThread, ThreadStatus
|
from threads import DownloadThread, ThreadStatus
|
||||||
from utilities import throwable_message
|
from utilities import pop_up
|
||||||
from constants import Messages
|
from constants import Messages
|
||||||
|
|
||||||
Ui_Download_window, _ = uic.loadUiType("download_db_window.ui")
|
Ui_Download_window, _ = uic.loadUiType("download_db_window.ui")
|
||||||
@@ -20,13 +20,13 @@ class DownloadWindow(QWidget, Ui_Download_window):
|
|||||||
)
|
)
|
||||||
self.everything_ok = True
|
self.everything_ok = True
|
||||||
|
|
||||||
self.no_internet_msg = throwable_message(self, title = Messages.NO_CONNECTION,
|
self.no_internet_msg = pop_up(self, title = Messages.NO_CONNECTION,
|
||||||
text = Messages.NO_CONNECTION_MSG,
|
text = Messages.NO_CONNECTION_MSG,
|
||||||
connection = self.close)
|
connection = self.close)
|
||||||
|
|
||||||
self.bad_db_download_msg = throwable_message(self, title = Messages.BAD_DOWNLOAD,
|
self.bad_db_download_msg = pop_up(self, title = Messages.BAD_DOWNLOAD,
|
||||||
text = Messages.BAD_DOWNLOAD_MSG,
|
text = Messages.BAD_DOWNLOAD_MSG,
|
||||||
connection = self.close)
|
connection = self.close)
|
||||||
|
|
||||||
self.download_thread = DownloadThread()
|
self.download_thread = DownloadThread()
|
||||||
self.download_thread.finished.connect(self.wait_close)
|
self.download_thread.finished.connect(self.wait_close)
|
||||||
@@ -45,7 +45,7 @@ class DownloadWindow(QWidget, Ui_Download_window):
|
|||||||
def terminate_process(self):
|
def terminate_process(self):
|
||||||
if self.download_thread.isRunning():
|
if self.download_thread.isRunning():
|
||||||
self.download_thread.terminate()
|
self.download_thread.terminate()
|
||||||
self.download_thread.wait()
|
self.download_thread.wait()
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
|
|||||||
156
main.py
156
main.py
@@ -18,7 +18,7 @@ from PyQt5.QtWidgets import (QMainWindow,
|
|||||||
QTreeWidgetItem,)
|
QTreeWidgetItem,)
|
||||||
from PyQt5.QtGui import QPixmap
|
from PyQt5.QtGui import QPixmap
|
||||||
from PyQt5 import uic
|
from PyQt5 import uic
|
||||||
from PyQt5.QtCore import (QFileInfo,
|
from PyQt5.QtCore import (QFileInfo,
|
||||||
Qt,
|
Qt,
|
||||||
pyqtSlot,)
|
pyqtSlot,)
|
||||||
|
|
||||||
@@ -31,8 +31,8 @@ import constants
|
|||||||
from themes import Theme
|
from themes import Theme
|
||||||
|
|
||||||
from utilities import (checksum_ok,
|
from utilities import (checksum_ok,
|
||||||
uncheck_and_emit,
|
uncheck_and_emit,
|
||||||
throwable_message,
|
pop_up,
|
||||||
connect_to,
|
connect_to,
|
||||||
filters_ok,
|
filters_ok,
|
||||||
is_undef_freq,
|
is_undef_freq,
|
||||||
@@ -81,9 +81,9 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
self.upper_freq_filter_unit.currentTextChanged,
|
self.upper_freq_filter_unit.currentTextChanged,
|
||||||
self.activate_low_freq_filter_btn.toggled],
|
self.activate_low_freq_filter_btn.toggled],
|
||||||
fun_to_connect = self.set_min_value_upper_limit,
|
fun_to_connect = self.set_min_value_upper_limit,
|
||||||
fun_args = [self.lower_freq_filter_unit,
|
fun_args = [self.lower_freq_filter_unit,
|
||||||
self.lower_freq_spinbox,
|
self.lower_freq_spinbox,
|
||||||
self.upper_freq_filter_unit,
|
self.upper_freq_filter_unit,
|
||||||
self.upper_freq_spinbox]
|
self.upper_freq_spinbox]
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -134,7 +134,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
],
|
],
|
||||||
self.activate_low_freq_filter_btn,
|
self.activate_low_freq_filter_btn,
|
||||||
[
|
[
|
||||||
self.lower_freq_spinbox,
|
self.lower_freq_spinbox,
|
||||||
self.lower_freq_filter_unit,
|
self.lower_freq_filter_unit,
|
||||||
self.lower_freq_confidence,
|
self.lower_freq_confidence,
|
||||||
],
|
],
|
||||||
@@ -157,9 +157,9 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
self.upper_band_filter_unit.currentTextChanged,
|
self.upper_band_filter_unit.currentTextChanged,
|
||||||
self.activate_low_band_filter_btn.toggled],
|
self.activate_low_band_filter_btn.toggled],
|
||||||
fun_to_connect = self.set_min_value_upper_limit,
|
fun_to_connect = self.set_min_value_upper_limit,
|
||||||
fun_args = [self.lower_band_filter_unit,
|
fun_args = [self.lower_band_filter_unit,
|
||||||
self.lower_band_spinbox,
|
self.lower_band_spinbox,
|
||||||
self.upper_band_filter_unit,
|
self.upper_band_filter_unit,
|
||||||
self.upper_band_spinbox]
|
self.upper_band_spinbox]
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -209,7 +209,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
],
|
],
|
||||||
self.activate_low_band_filter_btn,
|
self.activate_low_band_filter_btn,
|
||||||
[
|
[
|
||||||
self.lower_band_spinbox,
|
self.lower_band_spinbox,
|
||||||
self.lower_band_filter_unit,
|
self.lower_band_filter_unit,
|
||||||
self.lower_band_confidence,
|
self.lower_band_confidence,
|
||||||
],
|
],
|
||||||
@@ -244,7 +244,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
self.number_stations_btn,
|
self.number_stations_btn,
|
||||||
self.time_signal_btn,]
|
self.time_signal_btn,]
|
||||||
|
|
||||||
self.apply_remove_cat_filter_btn.set_texts(constants.APPLY, constants.REMOVE)
|
self.apply_remove_cat_filter_btn.set_texts(constants.APPLY, constants.REMOVE)
|
||||||
self.apply_remove_cat_filter_btn.set_slave_filters([*self.cat_filter_btns,
|
self.apply_remove_cat_filter_btn.set_slave_filters([*self.cat_filter_btns,
|
||||||
self.cat_at_least_one,
|
self.cat_at_least_one,
|
||||||
self.cat_all])
|
self.cat_all])
|
||||||
@@ -291,7 +291,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
self.mode_tree_widget.itemSelectionChanged.connect(self.manage_mode_selections)
|
self.mode_tree_widget.itemSelectionChanged.connect(self.manage_mode_selections)
|
||||||
self.reset_mode_filters_btn.clicked.connect(self.reset_mode_filters)
|
self.reset_mode_filters_btn.clicked.connect(self.reset_mode_filters)
|
||||||
self.apply_remove_mode_filter_btn.set_texts(constants.APPLY, constants.REMOVE)
|
self.apply_remove_mode_filter_btn.set_texts(constants.APPLY, constants.REMOVE)
|
||||||
self.apply_remove_mode_filter_btn.set_slave_filters([self.mode_tree_widget,
|
self.apply_remove_mode_filter_btn.set_slave_filters([self.mode_tree_widget,
|
||||||
self.include_unknown_modes_btn])
|
self.include_unknown_modes_btn])
|
||||||
self.apply_remove_mode_filter_btn.clicked.connect(self.display_signals)
|
self.apply_remove_mode_filter_btn.clicked.connect(self.display_signals)
|
||||||
|
|
||||||
@@ -344,10 +344,10 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
self.result_list.currentItemChanged.connect(self.display_specs)
|
self.result_list.currentItemChanged.connect(self.display_specs)
|
||||||
self.result_list.itemDoubleClicked.connect(lambda: self.main_tab.setCurrentWidget(self.signal_properties_tab))
|
self.result_list.itemDoubleClicked.connect(lambda: self.main_tab.setCurrentWidget(self.signal_properties_tab))
|
||||||
# self.display_signals()
|
# self.display_signals()
|
||||||
self.audio_widget = AudioPlayer(self.play,
|
self.audio_widget = AudioPlayer(self.play,
|
||||||
self.pause,
|
self.pause,
|
||||||
self.stop,
|
self.stop,
|
||||||
self.volume,
|
self.volume,
|
||||||
self.audio_progress,
|
self.audio_progress,
|
||||||
self.active_color,
|
self.active_color,
|
||||||
self.inactive_color)
|
self.inactive_color)
|
||||||
@@ -486,7 +486,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
self.download_window.download_thread.finished.connect(self.show_downloaded_signals)
|
self.download_window.download_thread.finished.connect(self.show_downloaded_signals)
|
||||||
self.download_window.download_thread.start()
|
self.download_window.download_thread.start()
|
||||||
self.download_window.show()
|
self.download_window.show()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def ask_if_download(self):
|
def ask_if_download(self):
|
||||||
if not self.download_window.isVisible():
|
if not self.download_window.isVisible():
|
||||||
@@ -497,16 +497,22 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
except:
|
except:
|
||||||
self.download_db()
|
self.download_db()
|
||||||
else:
|
else:
|
||||||
if not checksum_ok(db, constants.ChecksumWhat.DB):
|
try:
|
||||||
self.download_db()
|
is_checksum_ok = checksum_ok(db, constants.ChecksumWhat.DB)
|
||||||
|
except:
|
||||||
|
pop_up(self, title = constants.Messages.NO_CONNECTION,
|
||||||
|
text = constants.Messages.NO_CONNECTION_MSG).show()
|
||||||
else:
|
else:
|
||||||
answer = throwable_message(self, title = constants.Messages.DB_UP_TO_DATE,
|
if not is_checksum_ok:
|
||||||
text = constants.Messages.DB_UP_TO_DATE_MSG,
|
|
||||||
informative_text = constants.Messages.DOWNLOAD_ANYWAY_QUESTION,
|
|
||||||
is_question = True,
|
|
||||||
default_btn = QMessageBox.No).exec()
|
|
||||||
if answer == QMessageBox.Yes:
|
|
||||||
self.download_db()
|
self.download_db()
|
||||||
|
else:
|
||||||
|
answer = pop_up(self, title = constants.Messages.DB_UP_TO_DATE,
|
||||||
|
text = constants.Messages.DB_UP_TO_DATE_MSG,
|
||||||
|
informative_text = constants.Messages.DOWNLOAD_ANYWAY_QUESTION,
|
||||||
|
is_question = True,
|
||||||
|
default_btn = QMessageBox.No).exec()
|
||||||
|
if answer == QMessageBox.Yes:
|
||||||
|
self.download_db()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def check_db_ver(self):
|
def check_db_ver(self):
|
||||||
@@ -517,22 +523,28 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
with open(db_path, "rb") as file_db:
|
with open(db_path, "rb") as file_db:
|
||||||
db = file_db.read()
|
db = file_db.read()
|
||||||
except:
|
except:
|
||||||
answer = throwable_message(self, title = constants.Messages.NO_DB,
|
answer = pop_up(self, title = constants.Messages.NO_DB,
|
||||||
text = constants.Messages.NO_DB_AVAIL,
|
text = constants.Messages.NO_DB_AVAIL,
|
||||||
informative_text = constants.Messages.DOWNLOAD_NOW_QUESTION,
|
informative_text = constants.Messages.DOWNLOAD_NOW_QUESTION,
|
||||||
is_question = True).exec()
|
is_question = True).exec()
|
||||||
else:
|
else:
|
||||||
if checksum_ok(db, constants.ChecksumWhat.DB):
|
try:
|
||||||
throwable_message(self, title = constants.Messages.DB_UP_TO_DATE,
|
is_checksum_ok = checksum_ok(db, constants.ChecksumWhat.DB)
|
||||||
text = constants.Messages.DB_UP_TO_DATE_MSG).show()
|
except:
|
||||||
|
pop_up(self, title = constants.Messages.NO_CONNECTION,
|
||||||
|
text = constants.Messages.NO_CONNECTION_MSG).show()
|
||||||
else:
|
else:
|
||||||
answer = throwable_message(self, title = constants.Messages.DB_NEW_VER,
|
if is_checksum_ok:
|
||||||
text = constants.Messages.DB_NEW_VER_MSG,
|
pop_up(self, title = constants.Messages.DB_UP_TO_DATE,
|
||||||
informative_text = constants.Messages.DOWNLOAD_NOW_QUESTION,
|
text = constants.Messages.DB_UP_TO_DATE_MSG).show()
|
||||||
is_question = True).exec()
|
|
||||||
if answer == QMessageBox.Yes:
|
else:
|
||||||
self.download_db()
|
answer = pop_up(self, title = constants.Messages.DB_NEW_VER,
|
||||||
|
text = constants.Messages.DB_NEW_VER_MSG,
|
||||||
|
informative_text = constants.Messages.DOWNLOAD_NOW_QUESTION,
|
||||||
|
is_question = True).exec()
|
||||||
|
if answer == QMessageBox.Yes:
|
||||||
|
self.download_db()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def show_downloaded_signals(self):
|
def show_downloaded_signals(self):
|
||||||
@@ -544,7 +556,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
def load_db(self):
|
def load_db(self):
|
||||||
names = constants.Database.NAMES
|
names = constants.Database.NAMES
|
||||||
try:
|
try:
|
||||||
self.db = read_csv(os.path.join(constants.DATA_FOLDER, constants.Database.NAME),
|
self.db = read_csv(os.path.join(constants.DATA_FOLDER, constants.Database.NAME),
|
||||||
sep = constants.Database.DELIMITER,
|
sep = constants.Database.DELIMITER,
|
||||||
header = None,
|
header = None,
|
||||||
index_col = 0,
|
index_col = 0,
|
||||||
@@ -552,10 +564,10 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
names = names,)
|
names = names,)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
self.search_bar.setDisabled(True)
|
self.search_bar.setDisabled(True)
|
||||||
answer = throwable_message(self, title = constants.Messages.NO_DB,
|
answer = pop_up(self, title = constants.Messages.NO_DB,
|
||||||
text = constants.Messages.NO_DB_AVAIL,
|
text = constants.Messages.NO_DB_AVAIL,
|
||||||
informative_text = constants.Messages.DOWNLOAD_NOW_QUESTION,
|
informative_text = constants.Messages.DOWNLOAD_NOW_QUESTION,
|
||||||
is_question = True).exec()
|
is_question = True).exec()
|
||||||
if answer == QMessageBox.Yes:
|
if answer == QMessageBox.Yes:
|
||||||
self.download_db()
|
self.download_db()
|
||||||
else:
|
else:
|
||||||
@@ -567,9 +579,9 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
self.result_list.addItems(self.signal_names)
|
self.result_list.addItems(self.signal_names)
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def set_min_value_upper_limit(self, lower_combo_box,
|
def set_min_value_upper_limit(self, lower_combo_box,
|
||||||
lower_spin_box,
|
lower_spin_box,
|
||||||
upper_combo_box,
|
upper_combo_box,
|
||||||
upper_spin_box):
|
upper_spin_box):
|
||||||
if lower_spin_box.isEnabled():
|
if lower_spin_box.isEnabled():
|
||||||
unit_conversion = {'Hz' : ['kHz', 'MHz', 'GHz'],
|
unit_conversion = {'Hz' : ['kHz', 'MHz', 'GHz'],
|
||||||
@@ -592,23 +604,23 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
upper_combo_box.disconnect()
|
upper_combo_box.disconnect()
|
||||||
upper_combo_box.setCurrentText(new_unit)
|
upper_combo_box.setCurrentText(new_unit)
|
||||||
upper_combo_box.currentTextChanged.connect(
|
upper_combo_box.currentTextChanged.connect(
|
||||||
partial(self.set_min_value_upper_limit,
|
partial(self.set_min_value_upper_limit,
|
||||||
lower_combo_box,
|
lower_combo_box,
|
||||||
lower_spin_box,
|
lower_spin_box,
|
||||||
upper_combo_box,
|
upper_combo_box,
|
||||||
upper_spin_box)
|
upper_spin_box)
|
||||||
)
|
)
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def set_band_filter_label(self,
|
def set_band_filter_label(self,
|
||||||
activate_low_btn,
|
activate_low_btn,
|
||||||
lower_spinbox,
|
lower_spinbox,
|
||||||
lower_unit,
|
lower_unit,
|
||||||
lower_confidence,
|
lower_confidence,
|
||||||
activate_up_btn,
|
activate_up_btn,
|
||||||
upper_spinbox,
|
upper_spinbox,
|
||||||
upper_unit,
|
upper_unit,
|
||||||
upper_confidence,
|
upper_confidence,
|
||||||
range_lbl):
|
range_lbl):
|
||||||
activate_low = False
|
activate_low = False
|
||||||
activate_high = False
|
activate_high = False
|
||||||
@@ -774,7 +786,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
signal_freqs = (int(self.db.at[signal_name, constants.Signal.INF_FREQ]),
|
signal_freqs = (int(self.db.at[signal_name, constants.Signal.INF_FREQ]),
|
||||||
int(self.db.at[signal_name, constants.Signal.SUP_FREQ]))
|
int(self.db.at[signal_name, constants.Signal.SUP_FREQ]))
|
||||||
|
|
||||||
band_filter_ok = False
|
band_filter_ok = False
|
||||||
@@ -787,12 +799,12 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
lower_limit_ok = True
|
lower_limit_ok = True
|
||||||
upper_limit_ok = True
|
upper_limit_ok = True
|
||||||
if self.activate_low_freq_filter_btn.isChecked():
|
if self.activate_low_freq_filter_btn.isChecked():
|
||||||
if not signal_freqs[1] >= filters_ok(self.lower_freq_spinbox,
|
if not signal_freqs[1] >= filters_ok(self.lower_freq_spinbox,
|
||||||
self.lower_freq_filter_unit,
|
self.lower_freq_filter_unit,
|
||||||
self.lower_freq_confidence, -1):
|
self.lower_freq_confidence, -1):
|
||||||
lower_limit_ok = False
|
lower_limit_ok = False
|
||||||
if self.activate_up_freq_filter_btn.isChecked():
|
if self.activate_up_freq_filter_btn.isChecked():
|
||||||
if not signal_freqs[0] < filters_ok(self.upper_freq_spinbox,
|
if not signal_freqs[0] < filters_ok(self.upper_freq_spinbox,
|
||||||
self.upper_freq_filter_unit,
|
self.upper_freq_filter_unit,
|
||||||
self.upper_freq_confidence):
|
self.upper_freq_confidence):
|
||||||
upper_limit_ok = False
|
upper_limit_ok = False
|
||||||
@@ -811,18 +823,18 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
signal_bands = (int(self.db.at[signal_name, constants.Signal.INF_BAND]),
|
signal_bands = (int(self.db.at[signal_name, constants.Signal.INF_BAND]),
|
||||||
int(self.db.at[signal_name, constants.Signal.SUP_BAND]))
|
int(self.db.at[signal_name, constants.Signal.SUP_BAND]))
|
||||||
|
|
||||||
lower_limit_ok = True
|
lower_limit_ok = True
|
||||||
upper_limit_ok = True
|
upper_limit_ok = True
|
||||||
if self.activate_low_band_filter_btn.isChecked():
|
if self.activate_low_band_filter_btn.isChecked():
|
||||||
if not signal_bands[1] >= filters_ok(self.lower_band_spinbox,
|
if not signal_bands[1] >= filters_ok(self.lower_band_spinbox,
|
||||||
self.lower_band_filter_unit,
|
self.lower_band_filter_unit,
|
||||||
self.lower_band_confidence, -1):
|
self.lower_band_confidence, -1):
|
||||||
lower_limit_ok = False
|
lower_limit_ok = False
|
||||||
if self.activate_up_band_filter_btn.isChecked():
|
if self.activate_up_band_filter_btn.isChecked():
|
||||||
if not signal_bands[0] < filters_ok(self.upper_band_spinbox,
|
if not signal_bands[0] < filters_ok(self.upper_band_spinbox,
|
||||||
self.upper_band_filter_unit,
|
self.upper_band_filter_unit,
|
||||||
self.upper_band_confidence):
|
self.upper_band_confidence):
|
||||||
upper_limit_ok = False
|
upper_limit_ok = False
|
||||||
@@ -836,7 +848,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
positive_cases = 0
|
positive_cases = 0
|
||||||
for index, cat in enumerate(self.cat_filter_btns):
|
for index, cat in enumerate(self.cat_filter_btns):
|
||||||
if cat.isChecked():
|
if cat.isChecked():
|
||||||
cat_checked += 1
|
cat_checked += 1
|
||||||
if cat_code[index] == '1':
|
if cat_code[index] == '1':
|
||||||
positive_cases += 1
|
positive_cases += 1
|
||||||
if self.cat_at_least_one.isChecked():
|
if self.cat_at_least_one.isChecked():
|
||||||
@@ -901,7 +913,7 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
return True
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@pyqtSlot(QListWidgetItem, QListWidgetItem)
|
@pyqtSlot(QListWidgetItem, QListWidgetItem)
|
||||||
def display_specs(self, item, previous_item):
|
def display_specs(self, item, previous_item):
|
||||||
self.display_spectrogram()
|
self.display_spectrogram()
|
||||||
@@ -955,14 +967,14 @@ class MyApp(QMainWindow, Ui_MainWindow):
|
|||||||
lab.setStyleSheet(f"color: {self.inactive_color};")
|
lab.setStyleSheet(f"color: {self.inactive_color};")
|
||||||
self.set_band_range()
|
self.set_band_range()
|
||||||
self.audio_widget.set_audio_player()
|
self.audio_widget.set_audio_player()
|
||||||
|
|
||||||
def display_spectrogram(self):
|
def display_spectrogram(self):
|
||||||
default_pic = os.path.join(self.default_images_folder, constants.NOT_SELECTED)
|
default_pic = os.path.join(self.default_images_folder, constants.NOT_SELECTED)
|
||||||
item = self.result_list.currentItem()
|
item = self.result_list.currentItem()
|
||||||
if item:
|
if item:
|
||||||
spectrogram_name = item.text()
|
spectrogram_name = item.text()
|
||||||
path_spectr = os.path.join(constants.DATA_FOLDER,
|
path_spectr = os.path.join(constants.DATA_FOLDER,
|
||||||
constants.SPECTRA_FOLDER,
|
constants.SPECTRA_FOLDER,
|
||||||
spectrogram_name + constants.SPECTRA_EXT)
|
spectrogram_name + constants.SPECTRA_EXT)
|
||||||
if not QFileInfo(path_spectr).exists():
|
if not QFileInfo(path_spectr).exists():
|
||||||
path_spectr = os.path.join(self.default_images_folder, constants.NOT_AVAILABLE)
|
path_spectr = os.path.join(self.default_images_folder, constants.NOT_AVAILABLE)
|
||||||
|
|||||||
25
themes.py
25
themes.py
@@ -4,8 +4,7 @@ from PyQt5.QtWidgets import QAction
|
|||||||
from PyQt5.QtCore import pyqtSlot
|
from PyQt5.QtCore import pyqtSlot
|
||||||
from PyQt5.QtGui import QPixmap
|
from PyQt5.QtGui import QPixmap
|
||||||
import constants
|
import constants
|
||||||
from utilities import (throwable_message,
|
from utilities import pop_up, is_valid_html_color
|
||||||
is_valid_html_color,)
|
|
||||||
|
|
||||||
class ThemeConstants(object):
|
class ThemeConstants(object):
|
||||||
FOLDER = "themes"
|
FOLDER = "themes"
|
||||||
@@ -69,7 +68,7 @@ class Theme(object):
|
|||||||
themes.append(relative_folder)
|
themes.append(relative_folder)
|
||||||
for theme_path in themes:
|
for theme_path in themes:
|
||||||
theme_name = '&' + ' '.join(
|
theme_name = '&' + ' '.join(
|
||||||
map(lambda s: s.capitalize(),
|
map(lambda s: s.capitalize(),
|
||||||
os.path.basename(theme_path).split('-')[1].split('_')
|
os.path.basename(theme_path).split('-')[1].split('_')
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -81,17 +80,17 @@ class Theme(object):
|
|||||||
try:
|
try:
|
||||||
with open(os.path.join(
|
with open(os.path.join(
|
||||||
self.__theme_path,
|
self.__theme_path,
|
||||||
os.path.basename(self.__theme_path).split('-')[1] + ThemeConstants.EXTENSION)) as stylesheet:
|
os.path.basename(self.__theme_path).split('-')[1] + ThemeConstants.EXTENSION), "r") as stylesheet:
|
||||||
style = stylesheet.read()
|
style = stylesheet.read()
|
||||||
self.__parent.setStyleSheet(style)
|
self.__parent.setStyleSheet(style)
|
||||||
self.__parent.download_window.setStyleSheet(style)
|
self.__parent.download_window.setStyleSheet(style)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
throwable_message(self.__parent, title = ThemeConstants.THEME_NOT_FOUND,
|
pop_up(self.__parent, title = ThemeConstants.THEME_NOT_FOUND,
|
||||||
text = ThemeConstants.MISSING_THEME).show()
|
text = ThemeConstants.MISSING_THEME).show()
|
||||||
else:
|
else:
|
||||||
icons_path = os.path.join(self.__theme_path, ThemeConstants.ICONS_FOLDER)
|
icons_path = os.path.join(self.__theme_path, ThemeConstants.ICONS_FOLDER)
|
||||||
default_icons_path = os.path.join(ThemeConstants.FOLDER,
|
default_icons_path = os.path.join(ThemeConstants.FOLDER,
|
||||||
ThemeConstants.DEFAULT,
|
ThemeConstants.DEFAULT,
|
||||||
ThemeConstants.ICONS_FOLDER)
|
ThemeConstants.ICONS_FOLDER)
|
||||||
|
|
||||||
if os.path.exists(os.path.join(icons_path, constants.NOT_SELECTED)) and \
|
if os.path.exists(os.path.join(icons_path, constants.NOT_SELECTED)) and \
|
||||||
@@ -111,7 +110,7 @@ class Theme(object):
|
|||||||
self.__parent.search_label.setPixmap(QPixmap(default_search_label))
|
self.__parent.search_label.setPixmap(QPixmap(default_search_label))
|
||||||
self.__parent.modulation_search_label.setPixmap(QPixmap(default_search_label))
|
self.__parent.modulation_search_label.setPixmap(QPixmap(default_search_label))
|
||||||
self.__parent.location_search_label.setPixmap(QPixmap(default_search_label))
|
self.__parent.location_search_label.setPixmap(QPixmap(default_search_label))
|
||||||
|
|
||||||
self.__parent.search_label.setScaledContents(True)
|
self.__parent.search_label.setScaledContents(True)
|
||||||
self.__parent.modulation_search_label.setScaledContents(True)
|
self.__parent.modulation_search_label.setScaledContents(True)
|
||||||
self.__parent.location_search_label.setScaledContents(True)
|
self.__parent.location_search_label.setScaledContents(True)
|
||||||
@@ -145,13 +144,13 @@ class Theme(object):
|
|||||||
if quality.lower() == constants.INACTIVE and is_valid_html_color(color):
|
if quality.lower() == constants.INACTIVE and is_valid_html_color(color):
|
||||||
self.__parent.inactive_color = color
|
self.__parent.inactive_color = color
|
||||||
inactive_color_ok = True
|
inactive_color_ok = True
|
||||||
|
|
||||||
if not all([valid_file, valid_format, active_color_ok, inactive_color_ok]):
|
if not all([valid_file, valid_format, active_color_ok, inactive_color_ok]):
|
||||||
self.__parent.active_color = ThemeConstants.DEFAULT_ACTIVE_COLOR
|
self.__parent.active_color = ThemeConstants.DEFAULT_ACTIVE_COLOR
|
||||||
self.__parent.inactive_color = ThemeConstants.DEFAULT_INACTIVE_COLOR
|
self.__parent.inactive_color = ThemeConstants.DEFAULT_INACTIVE_COLOR
|
||||||
|
|
||||||
try:
|
try:
|
||||||
with open(os.path.join(ThemeConstants.FOLDER,
|
with open(os.path.join(ThemeConstants.FOLDER,
|
||||||
ThemeConstants.CURRENT), "w") as current_theme:
|
ThemeConstants.CURRENT), "w") as current_theme:
|
||||||
current_theme.write(self.__theme_path)
|
current_theme.write(self.__theme_path)
|
||||||
except:
|
except:
|
||||||
@@ -160,7 +159,7 @@ class Theme(object):
|
|||||||
def initialize(self):
|
def initialize(self):
|
||||||
current_theme_file = os.path.join(ThemeConstants.FOLDER, ThemeConstants.CURRENT)
|
current_theme_file = os.path.join(ThemeConstants.FOLDER, ThemeConstants.CURRENT)
|
||||||
if os.path.exists(current_theme_file):
|
if os.path.exists(current_theme_file):
|
||||||
with open(current_theme_file) as current_theme_path:
|
with open(current_theme_file, "r") as current_theme_path:
|
||||||
theme_path = current_theme_path.read()
|
theme_path = current_theme_path.read()
|
||||||
if theme_path != ThemeConstants.DEFAULT:
|
if theme_path != ThemeConstants.DEFAULT:
|
||||||
self.__apply(theme_path)
|
self.__apply(theme_path)
|
||||||
|
|||||||
10
threads.py
10
threads.py
@@ -42,9 +42,15 @@ class DownloadThread(QThread):
|
|||||||
self.reason = db.reason
|
self.reason = db.reason
|
||||||
self.__status = ThreadStatus.BAD_DOWNLOAD_ERR
|
self.__status = ThreadStatus.BAD_DOWNLOAD_ERR
|
||||||
return
|
return
|
||||||
if not checksum_ok(db.data, constants.ChecksumWhat.FOLDER):
|
try:
|
||||||
self.__status = ThreadStatus.BAD_DOWNLOAD_ERR
|
is_checksum_ok = checksum_ok(db.data, constants.ChecksumWhat.FOLDER)
|
||||||
|
except:
|
||||||
|
self.__status = ThreadStatus.NO_CONNECTION_ERR
|
||||||
return
|
return
|
||||||
|
else:
|
||||||
|
if not is_checksum_ok:
|
||||||
|
self.__status = ThreadStatus.BAD_DOWNLOAD_ERR
|
||||||
|
return
|
||||||
if os.path.exists(constants.DATA_FOLDER):
|
if os.path.exists(constants.DATA_FOLDER):
|
||||||
rmtree(constants.DATA_FOLDER)
|
rmtree(constants.DATA_FOLDER)
|
||||||
try:
|
try:
|
||||||
|
|||||||
28
utilities.py
28
utilities.py
@@ -13,11 +13,11 @@ def uncheck_and_emit(button):
|
|||||||
button.setChecked(False)
|
button.setChecked(False)
|
||||||
button.clicked.emit()
|
button.clicked.emit()
|
||||||
|
|
||||||
def throwable_message(cls, title, text,
|
def pop_up(cls, title, text,
|
||||||
informative_text = None,
|
informative_text = None,
|
||||||
connection = None,
|
connection = None,
|
||||||
is_question = False,
|
is_question = False,
|
||||||
default_btn = QMessageBox.Yes):
|
default_btn = QMessageBox.Yes):
|
||||||
msg = QMessageBox(cls)
|
msg = QMessageBox(cls)
|
||||||
msg.setWindowTitle(title)
|
msg.setWindowTitle(title)
|
||||||
msg.setText(text)
|
msg.setText(text)
|
||||||
@@ -41,10 +41,10 @@ def checksum_ok(data, what):
|
|||||||
else:
|
else:
|
||||||
raise ValueError("Wrong entry name.")
|
raise ValueError("Wrong entry name.")
|
||||||
try:
|
try:
|
||||||
reference = read_csv(constants.Database.LINK_REF,
|
reference = read_csv(constants.Database.LINK_REF,
|
||||||
delimiter = constants.Database.DELIMITER).iat[-1, n]
|
delimiter = constants.Database.DELIMITER).iat[-1, n]
|
||||||
except HTTPError:
|
except:
|
||||||
return False
|
raise
|
||||||
return code.hexdigest() == reference
|
return code.hexdigest() == reference
|
||||||
|
|
||||||
def is_valid_html_color(color):
|
def is_valid_html_color(color):
|
||||||
@@ -52,11 +52,11 @@ def is_valid_html_color(color):
|
|||||||
|
|
||||||
def connect_to(events_to_connect, fun_to_connect, fun_args):
|
def connect_to(events_to_connect, fun_to_connect, fun_args):
|
||||||
if fun_args:
|
if fun_args:
|
||||||
for signal in events_to_connect:
|
for event in events_to_connect:
|
||||||
signal.connect(partial(fun_to_connect, *fun_args))
|
event.connect(partial(fun_to_connect, *fun_args))
|
||||||
else:
|
else:
|
||||||
for signal in events_to_connect:
|
for event in events_to_connect:
|
||||||
signal.connect(fun_to_connect)
|
event.connect(fun_to_connect)
|
||||||
|
|
||||||
def filters_ok(spinbox, filter_unit, confidence, sign = 1):
|
def filters_ok(spinbox, filter_unit, confidence, sign = 1):
|
||||||
band_filter = spinbox.value() * constants.CONVERSION_FACTORS[filter_unit.currentText()]
|
band_filter = spinbox.value() * constants.CONVERSION_FACTORS[filter_unit.currentText()]
|
||||||
@@ -95,7 +95,7 @@ def format_numbers(lower, upper):
|
|||||||
lower = int(lower)
|
lower = int(lower)
|
||||||
if upper.is_integer():
|
if upper.is_integer():
|
||||||
upper = int(upper)
|
upper = int(upper)
|
||||||
if pre_lower != pre_upper:
|
if pre_lower != pre_upper:
|
||||||
return f"{lower:,} {units[lower_factor]} - {upper:,} {units[upper_factor]}"
|
return f"{lower:,} {units[lower_factor]} - {upper:,} {units[upper_factor]}"
|
||||||
else:
|
else:
|
||||||
return f"{lower:,} {units[lower_factor]}"
|
return f"{lower:,} {units[lower_factor]}"
|
||||||
|
|||||||
Reference in New Issue
Block a user