diff --git a/.gitignore b/.gitignore
index ea42f42..0bd1f8a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
__pycache__
Data
+.ipynb_checkpoints
+*.ipynb
wav_converter.py
diff --git a/audio_player.py b/audio_player.py
index 0031ec2..65edd90 100644
--- a/audio_player.py
+++ b/audio_player.py
@@ -1,5 +1,6 @@
import os
import sys
+from pydub import AudioSegment
from pygame import mixer
from PyQt5.QtCore import QTimer
@@ -10,9 +11,11 @@ class AudioPlayer(object):
method and set_audio_player, which loads the current file. Everything else
is managed internally.
"""
- __time_step = 1000
+ __time_step = 1000 # Milliseconds.
+ # __sample_rate = 8000 # Sample frequency of all audio files.
+
def __init__(self, play, pause, stop, volume, audio_progress):
- mixer.init()
+ # mixer.init(frequency = self.__sample_rate)
self.__paused = False
self.__play = play
self.__pause = pause
@@ -27,23 +30,26 @@ class AudioPlayer(object):
self.__stop.clicked.connect(self.__stop_audio)
self.__volume.valueChanged.connect(self.__set_volume)
+
def __set_volume(self):
mixer.music.set_volume(self.__volume.value() / self.__volume.maximum())
def __reset_audio_widget(self):
+ if mixer.get_init():
+ if mixer.music.get_busy():
+ mixer.music.stop()
+ self.__timer.stop()
+ mixer.quit()
self.__audio_progress.reset()
- self.__volume.setValue(50)
self.__enable_buttons(False, False, False)
self.__paused = False
- if mixer.music.get_busy():
- mixer.music.stop()
- self.__timer.stop()
def __update_bar(self):
pos = mixer.music.get_pos()
if pos == -1:
self.__timer.stop()
self.__audio_progress.reset()
+ self.__enable_buttons(True, False, False)
else:
self.__audio_progress.setValue(pos)
@@ -54,13 +60,14 @@ class AudioPlayer(object):
def set_audio_player(self, fname):
self.__reset_audio_widget()
- full_name = os.path.join('Data', 'Audio', fname + '.ogg')
+ full_name = os.path.join('Data', 'Audio_wav', fname + '.wav')
if os.path.exists(full_name):
+ mixer.init(frequency = AudioSegment.from_ogg(full_name).frame_rate)
self.__play.setEnabled(True)
self.__audio_file = full_name
self.__set_max_progress_bar()
mixer.music.load(full_name)
- mixer.music.set_volume(self.__volume.value())
+ self.__volume.setValue(50)
def __play_audio(self):
if not self.__paused:
@@ -73,6 +80,7 @@ class AudioPlayer(object):
def __stop_audio(self):
mixer.music.stop()
+ self.__audio_progress.reset()
self.__timer.stop()
self.__enable_buttons(True, False, False)
diff --git a/main.py b/main.py
index 21bec38..b34ae56 100644
--- a/main.py
+++ b/main.py
@@ -20,27 +20,28 @@ class MyApp(QMainWindow, Ui_MainWindow):
super().__init__()
self.setupUi(self)
self.show()
+ self.db_version = None
self.load_db()
self.display_signals()
self.search_bar.textChanged.connect(self.display_signals)
self.result_list.itemSelectionChanged.connect(self.display_specs)
self.play.setIcon(qta.icon('fa5.play-circle',
- color = "#7a7a7a",
- color_active = '#1d5eff'))
+ color = "#999999",
+ color_disabled = '#000000'))
self.play.setIconSize(self.play.size())
self.pause.setIcon(qta.icon('fa5.pause-circle',
- color = "#7a7a7a",
- color_active = '#1d5eff'))
+ color = "#999999",
+ color_disabled = '#000000'))
self.pause.setIconSize(self.pause.size())
self.stop.setIcon(qta.icon('fa5.stop-circle',
- color = "#7a7a7a",
- color_active = '#1d5eff'))
+ color = "#999999",
+ color_disabled = '#000000'))
self.stop.setIconSize(self.stop.size())
self.audio_widget = AudioPlayer(self.play,
- self.pause,
- self.stop,
- self.volume,
- self.audio_progress)
+ self.pause,
+ self.stop,
+ self.volume,
+ self.audio_progress)
def load_db(self):
try:
@@ -61,6 +62,24 @@ class MyApp(QMainWindow, Ui_MainWindow):
box.show()
else:
self.signal_names = db['signal_0']
+
+ try:
+ with open(os.path.join('Data', 'verdb.ini'), 'r') as dbver:
+ self.db_version = int(dbver.read())
+ except (FileNotFoundError, ValueError):
+ box = QMessageBox(self)
+ box.setStyleSheet("""
+ color:#FFFFFF;
+ """)
+ box.setWindowTitle("No database version")
+ box.setText("Unable to detect database version.\n"
+ "Possible data curruption.\n"
+ "Go to Updates->Force Download.")
+ box.show()
+ self.setStatusTip(f"Database version: undefined.")
+ else:
+ self.setStatusTip(f"Database version: {self.db_version}.")
+
def display_signals(self):
self.result_list.clear()
diff --git a/main_window.ui b/main_window.ui
index 68e00b0..ccd114b 100644
--- a/main_window.ui
+++ b/main_window.ui
@@ -38,6 +38,76 @@ QProgressBar::chunk {
/*background-color: #1d5eff;*/
background: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #1d5eff, stop:0.5 #4177ff, stop:1 #1d5eff);
border-radius: 3px;
+}
+
+QAbstractScrollArea::corner {
+ background: none;
+ border: none;
+}
+
+QScrollBar:vertical, QScrollBar:horizontal{
+ background-color:#343434;
+ border-radius: 5px;
+ /*background: none;*/
+}
+
+QScrollBar:vertical {
+ margin-top: 0px;
+ margin-bottom: 0px;
+ /*width: 10px;*/
+}
+QScrollBar:horizontal{
+ margin-left: 0px;
+ margin-right: 0px;
+ /*height: 10px;*/
+}
+
+QScrollBar::handle:vertical, QScrollBar::handle:horizontal{
+ border-radius: 5px;
+ border-color: none;
+ border-width: 1px;
+ background-color: #959595;
+}
+
+QScrollBar::add-line:vertical, QScrollBar::add-line:horizontal{
+ width: 0px;
+ height: 0px;
+}
+
+QScrollBar::sub-line:vertical, QScrollBar::sub-line:horizontal{
+ width: 0px;
+ height: 0px;
+}
+
+QScrollBar::add-page:vertical{
+ border-left: 1px solid gray;
+ background: transparent;
+ border-radius: 5px;
+/*
+ border: 1px#343434;
+ background-color: #343434;*/
+}
+QScrollBar::add-page:horizontal{
+ border-top: 1px solid gray;
+ background: transparent;
+ border-radius: 5px;
+/*
+ border: 1px#343434;
+ background-color: #343434;*/
+}
+QScrollBar::sub-page:vertical{
+ border-left: 1px solid gray;
+ background: transparent;
+ border-radius: 5px;
+/* border: 1px #343434;
+ background-color: #343434;*/
+}
+QScrollBar::sub-page:horizontal{
+ border-top: 1px solid gray;
+ background: transparent;
+ border-radius: 5px;
+/* border: 1px #343434;
+ background-color: #343434;*/
}
@@ -94,10 +164,11 @@ QProgressBar::chunk {
- Search a signal name.
+
- color: rgb(255, 255, 255);
+ background-color: #343434;
+color: rgb(255, 255, 255);
border: 1px solid gray;
border-radius: 5px;
@@ -147,9 +218,10 @@ border-radius: 5px;
QListWidget {
+ background-color:rgb(52,52,52);
color: rgb(255, 255, 255);
border: 1px solid gray;
- border-radius: 10px;
+ border-radius: 8px;
}
@@ -159,6 +231,12 @@ border-radius: 5px;
Qt::ScrollBarAsNeeded
+
+ 16
+
+
+ false
+
@@ -421,6 +499,9 @@ QSlider::handle:horizontal {
100
+
+ 10
+
50