Compare commits
5 Commits
b80e0f3c8e
...
17619f15ac
| Author | SHA1 | Date |
|---|---|---|
|
|
17619f15ac | |
|
|
b26d8a2906 | |
|
|
52b612ba3e | |
|
|
5ebd842346 | |
|
|
4af3c4c9ea |
|
|
@ -20,16 +20,20 @@
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import sqlite3
|
||||||
|
import logging
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from PyQt5.QtWidgets import QFileDialog, QApplication, QMessageBox
|
|
||||||
import sqlite3
|
|
||||||
import settings as stg
|
|
||||||
from os import chdir
|
|
||||||
import time
|
|
||||||
|
|
||||||
|
from PyQt5.QtWidgets import QFileDialog, QApplication, QMessageBox
|
||||||
|
|
||||||
|
import settings as stg
|
||||||
from settings import ABS_name
|
from settings import ABS_name
|
||||||
|
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
class CreateTableForSaveAs:
|
class CreateTableForSaveAs:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
|
@ -165,23 +169,32 @@ class CreateTableForSaveAs:
|
||||||
|
|
||||||
|
|
||||||
def open_file_dialog(self):
|
def open_file_dialog(self):
|
||||||
options = QFileDialog.Options()
|
name, _ = QFileDialog.getSaveFileName(
|
||||||
name = QFileDialog.getSaveFileName(
|
caption="Save As",
|
||||||
caption="Save As", directory="", filter="AcouSed Files (*.acd)", options=QFileDialog.DontUseNativeDialog)
|
directory="",
|
||||||
|
filter="AcouSed Files (*.acd)",
|
||||||
|
options=QFileDialog.DontUseNativeDialog
|
||||||
|
)
|
||||||
|
|
||||||
if name[0]:
|
if name != "":
|
||||||
|
filename = os.path.basename(name)
|
||||||
|
if os.path.splitext(filename)[1] != ".acd":
|
||||||
|
filename += ".acd"
|
||||||
|
|
||||||
stg.dirname_save_as = "/".join(name[0].split("/")[:-1]) + "/"
|
logger.debug(f"selected save file: '{filename}'")
|
||||||
stg.filename_save_as = name[0].split("/")[-1]
|
|
||||||
|
|
||||||
chdir(stg.dirname_save_as)
|
stg.dirname_save_as = os.path.dirname(name)
|
||||||
|
stg.filename_save_as = filename
|
||||||
|
|
||||||
|
try:
|
||||||
|
os.chdir(stg.dirname_save_as)
|
||||||
|
except OSError as e:
|
||||||
|
logger.warning(f"chdir: {str(e)}")
|
||||||
|
|
||||||
start = time.time()
|
start = time.time()
|
||||||
self.create_table()
|
self.create_table()
|
||||||
print(f"end : {time.time() - start} sec")
|
print(f"end : {time.time() - start} sec")
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
msgBox = QMessageBox()
|
msgBox = QMessageBox()
|
||||||
msgBox.setWindowTitle("Save Error")
|
msgBox.setWindowTitle("Save Error")
|
||||||
msgBox.setIcon(QMessageBox.Warning)
|
msgBox.setIcon(QMessageBox.Warning)
|
||||||
|
|
@ -192,7 +205,7 @@ class CreateTableForSaveAs:
|
||||||
def create_table(self):
|
def create_table(self):
|
||||||
|
|
||||||
# Create a new database and open a database connection to allow sqlite3 to work with it.
|
# Create a new database and open a database connection to allow sqlite3 to work with it.
|
||||||
cnx = sqlite3.connect(stg.filename_save_as + '.acd')
|
cnx = sqlite3.connect(stg.filename_save_as)
|
||||||
|
|
||||||
# Create database cursor to execute SQL statements and fetch results from SQL queries.
|
# Create database cursor to execute SQL statements and fetch results from SQL queries.
|
||||||
cur = cnx.cursor()
|
cur = cnx.cursor()
|
||||||
|
|
@ -459,6 +472,3 @@ class CreateTableForSaveAs:
|
||||||
|
|
||||||
# Close database connection
|
# Close database connection
|
||||||
cnx.close()
|
cnx.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,37 +20,50 @@
|
||||||
|
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
import numpy as np
|
|
||||||
from PyQt5.QtWidgets import QFileDialog, QApplication, QWidget, QTabWidget
|
|
||||||
import sqlite3
|
import sqlite3
|
||||||
from os import path, chdir
|
import logging
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from PyQt5.QtWidgets import QFileDialog, QApplication, QWidget, QTabWidget
|
||||||
|
|
||||||
import settings as stg
|
import settings as stg
|
||||||
from settings import BS_raw_data, acoustic_data
|
from settings import BS_raw_data, acoustic_data
|
||||||
|
|
||||||
from View.acoustic_data_tab import AcousticDataTab
|
from View.acoustic_data_tab import AcousticDataTab
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger()
|
||||||
|
|
||||||
class ReadTableForOpen:
|
class ReadTableForOpen:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self.opened = False
|
||||||
|
|
||||||
pass
|
self.open_file_dialog()
|
||||||
|
|
||||||
def open_file_dialog(self):
|
def open_file_dialog(self):
|
||||||
|
name, _ = QFileDialog.getOpenFileName(
|
||||||
|
caption="Open Acoused file",
|
||||||
|
directory="",
|
||||||
|
filter="Acoused file (*.acd)",
|
||||||
|
options=QFileDialog.DontUseNativeDialog
|
||||||
|
)
|
||||||
|
|
||||||
name = QFileDialog.getOpenFileName(caption="Open Acoused file", directory="", filter="Acoused file (*.acd)",
|
if name != "":
|
||||||
options=QFileDialog.DontUseNativeDialog)
|
stg.dirname_open = os.path.dirname(name)
|
||||||
|
stg.filename_open = os.path.basename(name)
|
||||||
|
|
||||||
if name:
|
try:
|
||||||
|
os.chdir(stg.dirname_open)
|
||||||
|
except OSError as e:
|
||||||
|
logger.warning(f"chdir: {str(e)}")
|
||||||
|
|
||||||
stg.dirname_open = path.dirname(name[0])
|
|
||||||
stg.filename_open = path.basename(name[0])
|
|
||||||
|
|
||||||
chdir(stg.dirname_open)
|
|
||||||
self.sql_file_to_open = open(stg.filename_open)
|
self.sql_file_to_open = open(stg.filename_open)
|
||||||
|
|
||||||
self.read_table()
|
self.read_table()
|
||||||
|
self.opened = True
|
||||||
|
|
||||||
|
|
||||||
def read_table(self):
|
def read_table(self):
|
||||||
|
|
||||||
|
|
@ -428,4 +441,3 @@ class ReadTableForOpen:
|
||||||
|
|
||||||
stg.BS_raw_data.append(np.reshape(stg.BS_raw_data_reshape[i],
|
stg.BS_raw_data.append(np.reshape(stg.BS_raw_data_reshape[i],
|
||||||
(len(stg.freq[i]), stg.depth[i].shape[1], stg.time[i].shape[1])))
|
(len(stg.freq[i]), stg.depth[i].shape[1], stg.time[i].shape[1])))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ class UpdateTableForSave:
|
||||||
def update_table(self):
|
def update_table(self):
|
||||||
|
|
||||||
# Create a new database and open a database connection to allow sqlite3 to work with it.
|
# Create a new database and open a database connection to allow sqlite3 to work with it.
|
||||||
cnx = sqlite3.connect(stg.filename_save_as + '.acd')
|
cnx = sqlite3.connect(stg.filename_save_as)
|
||||||
|
|
||||||
# Create database cursor to execute SQL statements and fetch results from SQL queries.
|
# Create database cursor to execute SQL statements and fetch results from SQL queries.
|
||||||
cur = cnx.cursor()
|
cur = cnx.cursor()
|
||||||
|
|
@ -104,7 +104,10 @@ class UpdateTableForSave:
|
||||||
# Drop Table if exists
|
# Drop Table if exists
|
||||||
cur.execute("DROP TABLE if exists Measure")
|
cur.execute("DROP TABLE if exists Measure")
|
||||||
|
|
||||||
cur.execute("""CREATE TABLE Measure(ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
cur.execute(
|
||||||
|
"""
|
||||||
|
CREATE TABLE Measure(
|
||||||
|
ID INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||||
acoustic_data INTEGER,
|
acoustic_data INTEGER,
|
||||||
Date STRING,
|
Date STRING,
|
||||||
Hour STRING,
|
Hour STRING,
|
||||||
|
|
@ -121,25 +124,52 @@ class UpdateTableForSave:
|
||||||
NbPingsAveragedPerProfile FLOAT,
|
NbPingsAveragedPerProfile FLOAT,
|
||||||
GainRx FLOAT,
|
GainRx FLOAT,
|
||||||
GainTx FLOAT
|
GainTx FLOAT
|
||||||
|
)"""
|
||||||
)
|
)
|
||||||
""")
|
|
||||||
|
|
||||||
# Fill the table Measure
|
# Fill the table Measure
|
||||||
for i in stg.acoustic_data:
|
for i in stg.acoustic_data:
|
||||||
|
|
||||||
for j in range(stg.freq[i].shape[0]):
|
for j in range(stg.freq[i].shape[0]):
|
||||||
cur.execute(''' INSERT into Measure(acoustic_data, Date, Hour, frequency, sound_attenuation, kt_read, kt_corrected, NbProfiles,
|
cur.execute(
|
||||||
NbProfilesPerSeconds, NbCells, CellSize, PulseLength,
|
'''
|
||||||
NbPingsPerSeconds, NbPingsAveragedPerProfile, GainRx, GainTx,
|
INSERT into Measure(
|
||||||
|
acoustic_data,
|
||||||
|
Date, Hour,
|
||||||
|
frequency,
|
||||||
|
sound_attenuation,
|
||||||
|
kt_read, kt_corrected,
|
||||||
|
NbProfiles, NbProfilesPerSeconds,
|
||||||
|
NbCells, CellSize,
|
||||||
|
PulseLength,
|
||||||
|
NbPingsPerSeconds,
|
||||||
|
NbPingsAveragedPerProfile,
|
||||||
|
GainRx, GainTx
|
||||||
|
) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''',
|
||||||
|
(
|
||||||
|
stg.acoustic_data[i],
|
||||||
|
(
|
||||||
|
str(stg.date[i].year) + str('-') +
|
||||||
|
str(stg.date[i].month) + str('-') +
|
||||||
|
str(stg.date[i].day)
|
||||||
|
),
|
||||||
|
(
|
||||||
|
str(stg.hour[i].hour) + str(':') +
|
||||||
|
str(stg.hour[i].minute)
|
||||||
|
),
|
||||||
|
stg.freq[i][j],
|
||||||
|
stg.water_attenuation[i][j],
|
||||||
|
stg.kt_read[j],
|
||||||
|
stg.kt_corrected[j],
|
||||||
|
stg.nb_profiles[i][j],
|
||||||
|
stg.nb_profiles_per_sec[i][j],
|
||||||
|
stg.nb_cells[i][j],
|
||||||
|
stg.cell_size[i][j],
|
||||||
|
stg.pulse_length[i][j],
|
||||||
|
stg.nb_pings_per_sec[i][j],
|
||||||
|
stg.nb_pings_averaged_per_profile[i][j],
|
||||||
|
stg.gain_rx[i][j], stg.gain_tx[i][j]
|
||||||
|
)
|
||||||
)
|
)
|
||||||
VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)''',
|
|
||||||
(stg.acoustic_data[i], stg.freq[i][j], stg.water_attenuation[i][j], stg.kt_read[j], stg.kt_corrected[j],
|
|
||||||
stg.nb_profiles[i][j], stg.nb_profiles_per_sec[i][j], stg.nb_cells[i][j],
|
|
||||||
stg.cell_size[i][j], stg.pulse_length[i][j], stg.nb_pings_per_sec[i][j],
|
|
||||||
stg.nb_pings_averaged_per_profile[i][j], stg.gain_rx[i][j], stg.gain_tx[i][j],
|
|
||||||
str(stg.date[i].year) + str('-') + str(stg.date[i].month) + str('-') + str(stg.date[i].day),
|
|
||||||
str(stg.hour[i].hour) + str(':') + str(stg.hour[i].minute)
|
|
||||||
))
|
|
||||||
|
|
||||||
# Commit the transaction after executing INSERT.
|
# Commit the transaction after executing INSERT.
|
||||||
cnx.commit()
|
cnx.commit()
|
||||||
|
|
@ -417,6 +447,3 @@ class UpdateTableForSave:
|
||||||
|
|
||||||
# Close database connection
|
# Close database connection
|
||||||
cnx.close()
|
cnx.close()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,18 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QHBoxLayout, QGroupBox, QPushButton, QComboBox, QLineEdit, QLabel,
|
from PyQt5.QtWidgets import (
|
||||||
QGridLayout, QTableView, QSpacerItem, QSizePolicy, QFileDialog, QMessageBox, QScrollArea,
|
QWidget, QVBoxLayout, QHBoxLayout, QGroupBox,
|
||||||
QSlider, QMenu, QCheckBox)
|
QPushButton, QComboBox, QLineEdit, QLabel,
|
||||||
|
QGridLayout, QTableView, QSpacerItem, QSizePolicy,
|
||||||
|
QFileDialog, QMessageBox, QScrollArea,
|
||||||
|
QSlider, QMenu, QCheckBox
|
||||||
|
)
|
||||||
from PyQt5.QtGui import QPixmap, QIcon
|
from PyQt5.QtGui import QPixmap, QIcon
|
||||||
from PyQt5.QtCore import Qt, QCoreApplication, pyqtSignal, QEvent, QSize, QPropertyAnimation
|
from PyQt5.QtCore import (
|
||||||
|
Qt, QCoreApplication, pyqtSignal, QEvent, QSize,
|
||||||
|
QPropertyAnimation
|
||||||
|
)
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
|
|
@ -35,7 +42,7 @@ from matplotlib.colors import LogNorm, CSS4_COLORS, BoundaryNorm
|
||||||
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas
|
||||||
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolBar
|
from matplotlib.backends.backend_qt5agg import NavigationToolbar2QT as NavigationToolBar
|
||||||
|
|
||||||
from os import path
|
import os
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
import locale
|
import locale
|
||||||
|
|
||||||
|
|
@ -1232,71 +1239,76 @@ class AcousticDataTab(QWidget):
|
||||||
self.combobox_frequency_information.currentIndex()]))
|
self.combobox_frequency_information.currentIndex()]))
|
||||||
|
|
||||||
def open_dialog_box(self):
|
def open_dialog_box(self):
|
||||||
|
abs_params = [
|
||||||
|
(None, None),
|
||||||
|
("AQUAscat file", "Aquascat file (*.aqa)"),
|
||||||
|
("UBSediFlow file", "UBSediFlow file (*.udt)"),
|
||||||
|
]
|
||||||
|
|
||||||
# --- Open dialog box + choice directory and select file ---
|
|
||||||
if self.combobox_ABS_system_choice.currentIndex() == 0:
|
system = self.combobox_ABS_system_choice.currentIndex()
|
||||||
|
|
||||||
|
if system == 0:
|
||||||
msgBox = QMessageBox()
|
msgBox = QMessageBox()
|
||||||
msgBox.setWindowTitle("Download Error")
|
msgBox.setWindowTitle("Download Error")
|
||||||
msgBox.setIcon(QMessageBox.Warning)
|
msgBox.setIcon(QMessageBox.Warning)
|
||||||
msgBox.setText("Choose ABS system before download acoustic files")
|
msgBox.setText("Choose ABS system before download acoustic files")
|
||||||
msgBox.setStandardButtons(QMessageBox.Ok)
|
msgBox.setStandardButtons(QMessageBox.Ok)
|
||||||
msgBox.exec()
|
msgBox.exec()
|
||||||
elif self.combobox_ABS_system_choice.currentIndex() == 1:
|
else:
|
||||||
|
abs_name, abs_file_type = abs_params[system]
|
||||||
|
|
||||||
filename = QFileDialog.getOpenFileNames(self, "AQUAscat file",
|
filenames, _ = QFileDialog.getOpenFileNames(
|
||||||
[stg.path_BS_raw_data[-1] if self.fileListWidget.count() > 0 else ""][0],
|
self, abs_name,
|
||||||
"Aquascat file (*.aqa)",
|
[
|
||||||
options=QFileDialog.DontUseNativeDialog)
|
stg.path_BS_raw_data[-1]
|
||||||
|
if self.fileListWidget.count() > 0
|
||||||
|
else ""
|
||||||
|
][0],
|
||||||
|
abs_file_type,
|
||||||
|
options=QFileDialog.DontUseNativeDialog
|
||||||
|
)
|
||||||
|
|
||||||
for n in filename[0]:
|
if len(filenames) == 0:
|
||||||
|
return
|
||||||
|
|
||||||
stg.path_BS_raw_data.append(path.dirname(n))
|
for n in filenames:
|
||||||
stg.filename_BS_raw_data.append(path.basename(n))
|
stg.path_BS_raw_data.append(os.path.dirname(n))
|
||||||
stg.data_preprocessed.append(path.basename(n))
|
stg.filename_BS_raw_data.append(os.path.basename(n))
|
||||||
|
stg.data_preprocessed.append(os.path.basename(n))
|
||||||
|
|
||||||
elif self.combobox_ABS_system_choice.currentIndex() == 2:
|
self.open_acoustic_data()
|
||||||
filename = QFileDialog.getOpenFileNames(self, "UBSediFlow file",
|
|
||||||
[stg.path_BS_raw_data[-1] if self.fileListWidget.count() > 0 else ""][0],
|
|
||||||
"UBSediFlow file (*.udt)",
|
|
||||||
options=QFileDialog.DontUseNativeDialog)
|
|
||||||
|
|
||||||
for n in filename[0]:
|
|
||||||
|
|
||||||
stg.path_BS_raw_data.append(path.dirname(n))
|
|
||||||
stg.filename_BS_raw_data.append(path.basename(n))
|
|
||||||
stg.data_preprocessed.append(path.basename(n))
|
|
||||||
|
|
||||||
|
def open_acoustic_data(self):
|
||||||
# --- Fill lineEdit with path and file names + load acoustic data ---
|
# --- Fill lineEdit with path and file names + load acoustic data ---
|
||||||
# --- fill date, hour and measurements information + fill frequency combobox for bottom detection ---
|
# --- fill date, hour and measurements information + fill frequency combobox for bottom detection ---
|
||||||
if self.combobox_ABS_system_choice.currentIndex() != 0:
|
system = self.combobox_ABS_system_choice.currentIndex()
|
||||||
|
if system != 0:
|
||||||
try:
|
try:
|
||||||
|
|
||||||
self.load_BS_acoustic_raw_data()
|
self.load_BS_acoustic_raw_data()
|
||||||
|
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
|
|
||||||
msgBox = QMessageBox()
|
msgBox = QMessageBox()
|
||||||
msgBox.setWindowTitle("Download Error")
|
msgBox.setWindowTitle("Download Error")
|
||||||
msgBox.setIcon(QMessageBox.Warning)
|
msgBox.setIcon(QMessageBox.Warning)
|
||||||
msgBox.setText("Please select a file")
|
msgBox.setText("Please select a file")
|
||||||
msgBox.setStandardButtons(QMessageBox.Ok)
|
msgBox.setStandardButtons(QMessageBox.Ok)
|
||||||
msgBox.exec()
|
msgBox.exec()
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
if self.fileListWidget.count() == 0:
|
if self.fileListWidget.count() == 0:
|
||||||
|
for p, f in zip(stg.path_BS_raw_data,
|
||||||
for p, f in zip(stg.path_BS_raw_data, stg.filename_BS_raw_data):
|
stg.filename_BS_raw_data):
|
||||||
self.fileListWidget.addFilenames([f])
|
self.fileListWidget.addFilenames([f])
|
||||||
self.fileListWidget.setToolTip(p)
|
self.fileListWidget.setToolTip(p)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
for k in range(self.fileListWidget.count(),
|
||||||
for k in range(self.fileListWidget.count(), len(stg.filename_BS_raw_data), 1):
|
len(stg.filename_BS_raw_data),
|
||||||
self.fileListWidget.addFilenames([stg.filename_BS_raw_data[k]])
|
1):
|
||||||
self.fileListWidget.setToolTip(stg.path_BS_raw_data[k])
|
self.fileListWidget.addFilenames(
|
||||||
|
[stg.filename_BS_raw_data[k]]
|
||||||
|
)
|
||||||
|
self.fileListWidget.setToolTip(
|
||||||
|
stg.path_BS_raw_data[k]
|
||||||
|
)
|
||||||
|
|
||||||
self.fill_measurements_information_groupbox()
|
self.fill_measurements_information_groupbox()
|
||||||
self.fill_table()
|
self.fill_table()
|
||||||
|
|
@ -1304,7 +1316,11 @@ class AcousticDataTab(QWidget):
|
||||||
self.update_frequency_combobox()
|
self.update_frequency_combobox()
|
||||||
self.water_attenuation()
|
self.water_attenuation()
|
||||||
|
|
||||||
stg.acoustic_data = list(range(self.fileListWidget.count()))
|
stg.acoustic_data = list(
|
||||||
|
range(
|
||||||
|
self.fileListWidget.count()
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def rename_file_in_ListWidget(self, event):
|
def rename_file_in_ListWidget(self, event):
|
||||||
|
|
||||||
|
|
@ -2719,4 +2735,3 @@ class AcousticDataTab(QWidget):
|
||||||
self.update_plot_profile()
|
self.update_plot_profile()
|
||||||
|
|
||||||
self.fig_BS.canvas.draw_idle()
|
self.fig_BS.canvas.draw_idle()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -262,20 +262,33 @@ class Ui_MainWindow(object):
|
||||||
|
|
||||||
def save_as(self):
|
def save_as(self):
|
||||||
CreateTableForSaveAs()
|
CreateTableForSaveAs()
|
||||||
self.mainwindow.setWindowTitle("AcouSed - " + stg.filename_save_as + ".acd")
|
self.mainwindow.setWindowTitle(
|
||||||
|
"AcouSed - " +
|
||||||
|
stg.filename_save_as
|
||||||
|
)
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
UpdateTableForSave()
|
UpdateTableForSave()
|
||||||
|
|
||||||
def open(self):
|
def open(self):
|
||||||
ReadTableForOpen()
|
reader = ReadTableForOpen()
|
||||||
|
if reader.opened:
|
||||||
|
self.mainwindow.open_study_update_tabs()
|
||||||
|
|
||||||
def load_calibration_constant_values(self):
|
def load_calibration_constant_values(self):
|
||||||
cc_kt = CalibrationConstantKt()
|
cc_kt = CalibrationConstantKt()
|
||||||
cc_kt.exec()
|
cc_kt.exec()
|
||||||
|
|
||||||
def db_browser_for_sqlite(self):
|
def db_browser_for_sqlite(self):
|
||||||
Popen(f"sqlitebrowser", shell=True)
|
try:
|
||||||
|
Popen("sqlitebrowser")
|
||||||
|
except OSError as e:
|
||||||
|
msg_box = QtWidgets.QMessageBox()
|
||||||
|
msg_box.setWindowTitle("DB Browser for SQLite Error")
|
||||||
|
msg_box.setIcon(QtWidgets.QMessageBox.Critical)
|
||||||
|
msg_box.setText(f"DB Browser for SQLite Error:\n {str(e)}")
|
||||||
|
msg_box.setStandardButtons(QtWidgets.QMessageBox.Ok)
|
||||||
|
msg_box.exec()
|
||||||
|
|
||||||
def about_window(self):
|
def about_window(self):
|
||||||
print("about")
|
print("about")
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
import sys
|
from PyQt5.QtWidgets import (
|
||||||
|
QApplication, QWidget, QVBoxLayout, QHBoxLayout,
|
||||||
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QTextEdit, QPushButton, QSpacerItem, \
|
QTextEdit, QPushButton, QSpacerItem, QSpinBox,
|
||||||
QSpinBox, QSizePolicy, QFontComboBox, QColorDialog
|
QSizePolicy, QFontComboBox, QColorDialog
|
||||||
|
)
|
||||||
from PyQt5.QtGui import QPixmap, QIcon, QFont
|
from PyQt5.QtGui import QPixmap, QIcon, QFont
|
||||||
from PyQt5.QtCore import Qt
|
from PyQt5.QtCore import Qt
|
||||||
|
|
||||||
|
|
@ -189,27 +190,21 @@ class NoteTab(QWidget):
|
||||||
self.textEdit.setAlignment(Qt.AlignJustify)
|
self.textEdit.setAlignment(Qt.AlignJustify)
|
||||||
|
|
||||||
def print_settings(self):
|
def print_settings(self):
|
||||||
|
self.textEdit.setText(
|
||||||
self.textEdit.setText("Acoustic data: \n\n"
|
"Acoustic data: \n\n"
|
||||||
f" ABS raw data file: {stg.path_BS_raw_data}/{stg.filename_BS_raw_data} \n"
|
f" ABS raw data file: {stg.path_BS_raw_data}/{stg.filename_BS_raw_data} \n"
|
||||||
f" ABS noise data file: {stg.path_BS_noise_data}/{stg.filename_BS_noise_data} \n"
|
f" ABS noise data file: {stg.path_BS_noise_data}/{stg.filename_BS_noise_data} \n"
|
||||||
"\n\n"
|
"\n\n"
|
||||||
"------------------------------------------------------------------------- \n\n\n"
|
"------------------------------------------------------------------------- \n\n\n"
|
||||||
|
|
||||||
"Particle size data: \n"
|
"Particle size data: \n"
|
||||||
f" Fine sediments data file: {stg.fine_sediment_path}/{stg.fine_sediment_filename} \n"
|
f" Fine sediments data file: {stg.path_fine}/{stg.filename_fine} \n"
|
||||||
f" Sand sediments data file: {stg.sand_sediment_path}/{stg.sand_sediment_filename} \n"
|
f" Sand sediments data file: {stg.path_sand}/{stg.filename_sand} \n"
|
||||||
"\n\n"
|
"\n\n"
|
||||||
"------------------------------------------------------------------------- \n\n\n")
|
"------------------------------------------------------------------------- \n\n\n"
|
||||||
|
)
|
||||||
|
|
||||||
# "Acoustic Inversion parameters: \n"
|
# "Acoustic Inversion parameters: \n"
|
||||||
# f" frequencies to compute VBI: {stg.freq_text[int(stg.frequencies_to_compute_VBI[0, 0])]}, "
|
# f" frequencies to compute VBI: {stg.freq_text[int(stg.frequencies_to_compute_VBI[0, 0])]}, "
|
||||||
# f"{stg.freq_text[int(stg.frequencies_to_compute_VBI[1, 0])]} \n"
|
# f"{stg.freq_text[int(stg.frequencies_to_compute_VBI[1, 0])]} \n"
|
||||||
# f" frequency to compute SSC: {stg.freq_text[int(stg.frequency_to_compute_SSC[0])]}")
|
# f" frequency to compute SSC: {stg.freq_text[int(stg.frequency_to_compute_SSC[0])]}")
|
||||||
|
|
||||||
|
|
||||||
# if __name__ == "__main__":
|
|
||||||
# app = QApplication(sys.argv)
|
|
||||||
# window = NoteTab()
|
|
||||||
# window.show()
|
|
||||||
# sys.exit(app.exec_())
|
|
||||||
|
|
|
||||||
18
main.py
18
main.py
|
|
@ -33,7 +33,7 @@ logging.basicConfig(
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
logger.setLevel(logging.INFO)
|
logger.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
class MainApplication(QMainWindow):
|
class MainApplication(QMainWindow):
|
||||||
|
|
||||||
|
|
@ -49,15 +49,18 @@ class MainApplication(QMainWindow):
|
||||||
height = size.height()
|
height = size.height()
|
||||||
self.resize(int(PERCENT_SCREEN_SIZE*width), int(PERCENT_SCREEN_SIZE*height))
|
self.resize(int(PERCENT_SCREEN_SIZE*width), int(PERCENT_SCREEN_SIZE*height))
|
||||||
try:
|
try:
|
||||||
self.read_table_open = ReadTableForOpen()
|
|
||||||
# **************************************************
|
# **************************************************
|
||||||
# -------------- Acoustic data tab ---------------
|
# -------------- Acoustic data tab ---------------
|
||||||
|
|
||||||
self.acoustic_data_tab = AcousticDataTab(self.ui_mainwindow.tab1)
|
self.acoustic_data_tab = AcousticDataTab(self.ui_mainwindow.tab1)
|
||||||
print("0 AcousticDataTab ", id(AcousticDataTab))
|
print("0 AcousticDataTab ", id(AcousticDataTab))
|
||||||
|
|
||||||
self.acoustic_data_tab.combobox_ABS_system_choice.editTextChanged.connect(
|
self.acoustic_data_tab\
|
||||||
self.acoustic_data_tab.ABS_system_choice)
|
.combobox_ABS_system_choice\
|
||||||
|
.editTextChanged\
|
||||||
|
.connect(
|
||||||
|
self.acoustic_data_tab.ABS_system_choice
|
||||||
|
)
|
||||||
|
|
||||||
# **************************************************
|
# **************************************************
|
||||||
# --------- Signal pre-processing data tab ----------
|
# --------- Signal pre-processing data tab ----------
|
||||||
|
|
@ -92,8 +95,6 @@ class MainApplication(QMainWindow):
|
||||||
|
|
||||||
# self.user_manual_tab = UserManualTab(self.ui_mainwindow.tab7)
|
# self.user_manual_tab = UserManualTab(self.ui_mainwindow.tab7)
|
||||||
|
|
||||||
self.ui_mainwindow.actionOpen.triggered.connect(self.trig_open)
|
|
||||||
|
|
||||||
# **************************************************
|
# **************************************************
|
||||||
# ---------------- Text File Error -----------------
|
# ---------------- Text File Error -----------------
|
||||||
|
|
||||||
|
|
@ -106,9 +107,7 @@ class MainApplication(QMainWindow):
|
||||||
sortie.write(traceback.format_exc())
|
sortie.write(traceback.format_exc())
|
||||||
# traceback.TracebackException.from_exception(e).print(file=sortie)
|
# traceback.TracebackException.from_exception(e).print(file=sortie)
|
||||||
|
|
||||||
def trig_open(self):
|
def open_study_update_tabs(self):
|
||||||
self.read_table_open.open_file_dialog()
|
|
||||||
|
|
||||||
self.acoustic_data_tab.combobox_ABS_system_choice.setCurrentText(stg.ABS_name[0])
|
self.acoustic_data_tab.combobox_ABS_system_choice.setCurrentText(stg.ABS_name[0])
|
||||||
self.acoustic_data_tab.fileListWidget.addFilenames(stg.filename_BS_raw_data)
|
self.acoustic_data_tab.fileListWidget.addFilenames(stg.filename_BS_raw_data)
|
||||||
|
|
||||||
|
|
@ -119,7 +118,6 @@ class MainApplication(QMainWindow):
|
||||||
self.sample_data_tab.lineEdit_fine_sediment.setToolTip(stg.path_fine)
|
self.sample_data_tab.lineEdit_fine_sediment.setToolTip(stg.path_fine)
|
||||||
# self.sample_data_tab.fill_table_fine()
|
# self.sample_data_tab.fill_table_fine()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
# print("sys.argv:", [arg for arg in sys.argv])
|
# print("sys.argv:", [arg for arg in sys.argv])
|
||||||
# app = MainApplication(sys.argv)
|
# app = MainApplication(sys.argv)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue