diff --git a/Model/create_table_for_save_as.py b/Model/create_table_for_save_as.py index ed84699..bdb675c 100644 --- a/Model/create_table_for_save_as.py +++ b/Model/create_table_for_save_as.py @@ -195,6 +195,13 @@ class CreateTableForSaveAs: ) """ + self.create_Notes = """ + CREATE TABLE Notes( + ID INTEGER PRIMARY KEY AUTOINCREMENT, + notes TEXT + ) + """ + def save_as(self): self.open_file_dialog() self.save() @@ -247,6 +254,7 @@ class CreateTableForSaveAs: self.create_table_calibration_parameters(cnx, cur) self.create_table_calibration(cnx, cur) self.create_table_inversion(cnx, cur) + self.create_table_notes(cnx, cur) cnx.commit() @@ -625,3 +633,25 @@ class CreateTableForSaveAs: cnx.commit() logger.info(f"table Inversion : {time.time() - start_table_Inversion} sec") + + def create_table_notes(self, cnx, cur): + start_table = time.time() + + cur.execute("DROP TABLE if exists Notes") + + cur.execute(self.create_Notes) + + for i in range(len(stg.SSC_fine)): + cur.execute( + """ + INSERT into Notes( + notes + ) + VALUES(?) + """, + (stg.notes,) + ) + + cnx.commit() + + logger.info(f"table Notes : {time.time() - start_table} sec") diff --git a/Model/read_table_for_open.py b/Model/read_table_for_open.py index 1776ec2..e0b80f3 100644 --- a/Model/read_table_for_open.py +++ b/Model/read_table_for_open.py @@ -85,6 +85,7 @@ class ReadTableForOpen: self.read_table_table_sediment_data() self.read_table_table_calibration_parameters() self.read_table_table_calibration() + self.read_table_table_notes() logger.debug(f"Reading '{stg.filename_open}' done") @@ -705,3 +706,16 @@ class ReadTableForOpen: stg.FCB = np_f64_parse(next(it)).tolist() stg.depth_real = np_f64_parse(next(it)).tolist() stg.lin_reg = np_f64_parse(next(it)).tolist() + + @trace + def read_table_table_notes(self): + np_f64_parse = lambda d: np.frombuffer(d, dtype=np.float64) + + query = f''' + SELECT notes + FROM Notes + ''' + + data = self.execute(query) + if len(data) != 0: + stg.notes = data[0][0] diff --git a/View/note_tab.py b/View/note_tab.py index d8b7274..636018d 100644 --- a/View/note_tab.py +++ b/View/note_tab.py @@ -1,3 +1,4 @@ +import os import logging from PyQt5.QtWidgets import ( @@ -6,7 +7,7 @@ from PyQt5.QtWidgets import ( QSizePolicy, QFontComboBox, QColorDialog ) from PyQt5.QtGui import QPixmap, QIcon, QFont -from PyQt5.QtCore import Qt +from PyQt5.QtCore import Qt, QTimer import settings as stg @@ -18,13 +19,13 @@ class NoteTab(QWidget): ''' This class generates a enhanced notepad in Note Tab ''' + def _path_icon(self, icon): + return os.path.join("icons", icon) + def __init__(self, widget_tab): super().__init__() - path_icon = "./icons/" - - # FIXME: The note are disabled because there are never saved - widget_tab.setEnabled(False) + self.changed = False self.verticalLayout_main_note_tab = QVBoxLayout(widget_tab) @@ -36,96 +37,104 @@ class NoteTab(QWidget): self.filename_text = "" self.pushbutton_new_txt = QPushButton() - self.icon_new_txt = QPixmap(path_icon + "new_text.png") + self.icon_new_txt = QPixmap(self._path_icon("new_text.png")) self.pushbutton_new_txt.setIcon(QIcon(self.icon_new_txt)) # self.pushbutton_new_txt.clicked.connect(self.new_text) self.horizontalLayout_toolbar.addWidget(self.pushbutton_new_txt) self.pushbutton_save_txt = QPushButton() - self.icon_save_txt = QPixmap(path_icon + "save_txt.png") + self.icon_save_txt = QPixmap(self._path_icon("save_txt.png")) self.pushbutton_save_txt.setIcon(QIcon(self.icon_save_txt)) # self.pushbutton_save_txt.clicked.connect(self.save_text) self.horizontalLayout_toolbar.addWidget(self.pushbutton_save_txt) self.pushbutton_open_txt = QPushButton() - self.icon_open_txt = QPixmap(path_icon + "open_txt.png") + self.icon_open_txt = QPixmap(self._path_icon("open_txt.png")) self.pushbutton_open_txt.setIcon(QIcon(self.icon_open_txt)) # self.pushbutton_open_txt.clicked.connect(self.open_text) self.horizontalLayout_toolbar.addWidget(self.pushbutton_open_txt) self.fontbox = QFontComboBox() - self.fontbox.currentFontChanged.connect(lambda font : self.textEdit.setCurrentFont(font)) + self.fontbox.currentFontChanged.connect( + lambda font : self.textEdit.setCurrentFont(font) + ) self.horizontalLayout_toolbar.addWidget(self.fontbox) self.fontSize = QSpinBox() self.fontSize.setSuffix("pt") - self.fontSize.valueChanged.connect(lambda size: self.textEdit.setFontPointSize(size)) + self.fontSize.valueChanged.connect( + lambda size: self.textEdit.setFontPointSize(size) + ) self.fontSize.setValue(14) self.horizontalLayout_toolbar.addWidget(self.fontSize) self.fontColor = QPushButton() - self.icon_fontColor = QPixmap(path_icon + "font_color.png") + self.icon_fontColor = QPixmap(self._path_icon("font_color.png")) self.fontColor.setIcon(QIcon(self.icon_fontColor)) # self.QAction(QIcon("couleur_police.png"), "Changer la couleur du texte", self)couleur_fond.png self.fontColor.clicked.connect(self.fontColorChanged) self.horizontalLayout_toolbar.addWidget(self.fontColor) self.backColor = QPushButton() - self.icon_backColor = QPixmap(path_icon + "background_color.png") + self.icon_backColor = QPixmap(self._path_icon("background_color.png")) self.backColor.setIcon(QIcon(self.icon_backColor)) self.backColor.clicked.connect(self.highlight) self.horizontalLayout_toolbar.addWidget(self.backColor) self.boldAction = QPushButton() - self.icon_boldAction = QPixmap(path_icon + "bold.png") + self.icon_boldAction = QPixmap(self._path_icon("bold.png")) self.boldAction.setIcon(QIcon(self.icon_boldAction)) self.boldAction.clicked.connect(self.bold) self.horizontalLayout_toolbar.addWidget(self.boldAction) self.italicAction = QPushButton() - self.icon_italicAction = QPixmap(path_icon + "italic.png") + self.icon_italicAction = QPixmap(self._path_icon("italic.png")) self.italicAction.setIcon(QIcon(self.icon_italicAction)) self.italicAction.clicked.connect(self.italic) self.horizontalLayout_toolbar.addWidget(self.italicAction) self.underlineAction = QPushButton() - self.icon_underlineAction = QPixmap(path_icon + "underline.png") + self.icon_underlineAction = QPixmap(self._path_icon("underline.png")) self.underlineAction.setIcon(QIcon(self.icon_underlineAction)) self.underlineAction.clicked.connect(self.underline) self.horizontalLayout_toolbar.addWidget(self.underlineAction) self.strikeAction = QPushButton() - self.icon_strikeAction = QPixmap(path_icon + "strike.png") + self.icon_strikeAction = QPixmap(self._path_icon("strike.png")) self.strikeAction.setIcon(QIcon(self.icon_strikeAction)) self.strikeAction.clicked.connect(self.strike) self.horizontalLayout_toolbar.addWidget(self.strikeAction) self.alignLeftAction = QPushButton() - self.icon_alignLeftAction = QPixmap(path_icon + "left.png") + self.icon_alignLeftAction = QPixmap(self._path_icon("left.png")) self.alignLeftAction.setIcon(QIcon(self.icon_alignLeftAction)) self.alignLeftAction.clicked.connect(self.alignLeft) self.horizontalLayout_toolbar.addWidget(self.alignLeftAction) self.alignCenterAction = QPushButton() - self.icon_alignCenterAction = QPixmap(path_icon + "centre.png") + self.icon_alignCenterAction = QPixmap(self._path_icon("centre.png")) self.alignCenterAction.setIcon(QIcon(self.icon_alignCenterAction)) self.alignCenterAction.clicked.connect(self.alignCenter) self.horizontalLayout_toolbar.addWidget(self.alignCenterAction) self.alignRightAction = QPushButton() - self.icon_alignRightAction = QPixmap(path_icon + "right.png") + self.icon_alignRightAction = QPixmap(self._path_icon("right.png")) self.alignRightAction.setIcon(QIcon(self.icon_alignRightAction)) self.alignRightAction.clicked.connect(self.alignRight) self.horizontalLayout_toolbar.addWidget(self.alignRightAction) self.alignJustifyAction = QPushButton() - self.icon_alignJustifyAction = QPixmap(path_icon + "justify.png") + self.icon_alignJustifyAction = QPixmap(self._path_icon("justify.png")) self.alignJustifyAction.setIcon(QIcon(self.icon_alignJustifyAction)) self.alignJustifyAction.clicked.connect(self.alignJustify) self.horizontalLayout_toolbar.addWidget(self.alignJustifyAction) - self.horizontalSpacerItem_toolbar_note_tab = QSpacerItem(500, 10, QSizePolicy.Expanding, QSizePolicy.Minimum) - self.horizontalLayout_toolbar.addItem(self.horizontalSpacerItem_toolbar_note_tab) + self.horizontalSpacerItem_toolbar_note_tab = QSpacerItem( + 500, 10, QSizePolicy.Expanding, QSizePolicy.Minimum + ) + self.horizontalLayout_toolbar.addItem( + self.horizontalSpacerItem_toolbar_note_tab + ) self.pushbutton_print_settings = QPushButton() self.pushbutton_print_settings.setText("EDIT SETTINGS") @@ -134,19 +143,40 @@ class NoteTab(QWidget): self.verticalLayout_main_note_tab.addWidget(self.textEdit) + self.textEdit.textChanged.connect(self.setTextChanged) + + self._alarm = QTimer() + self._alarm.timeout.connect(self.applyTextOnStg) + self._alarm.start(1000) + ## ------------------------------- ## ---------- Functions ---------- ## ------------------------------- @trace def full_update(self): - logger.debug(f"{__name__}: Update") self.blockSignals(True) + self.textEdit.blockSignals(True) + self._alarm.blockSignals(True) - # TODO: Update all widgets + logger.debug(f"{__name__}: Update") + self.applyStgOnText() + + self._alarm.blockSignals(False) + self.textEdit.blockSignals(False) self.blockSignals(False) + def setTextChanged(self): + self.changed = True + + def applyTextOnStg(self): + text = self.textEdit.toHtml() + stg.notes = text + + def applyStgOnText(self): + text = self.textEdit.setText(stg.notes) + # def new_text(self): # window = self.ui_mainwindow.tab5 # window.show() diff --git a/main.py b/main.py index ed27bbe..ee8fdf6 100644 --- a/main.py +++ b/main.py @@ -125,16 +125,6 @@ class MainApplication(QMainWindow): for tab in self.tabs: tab.full_update() - # 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.signal_processing_tab.combobox_acoustic_data_choice.addItems(stg.filename_BS_raw_data) - - # self.sample_data_tab.fill_comboboxes_and_plot_transect() - # self.sample_data_tab.lineEdit_fine_sediment.setText(stg.filename_fine) - # self.sample_data_tab.lineEdit_fine_sediment.setToolTip(stg.path_fine) - # self.sample_data_tab.fill_table_fine() - if __name__ == '__main__': # print("sys.argv:", [arg for arg in sys.argv]) # app = MainApplication(sys.argv) diff --git a/settings.py b/settings.py index 6f82fda..7c7e589 100644 --- a/settings.py +++ b/settings.py @@ -265,3 +265,9 @@ fine_sample_position = [] # Fine samples indexes position for time and dep sand_sample_position = [] # Sand samples indexes position for time and depth [(time_index, depth_index)] # List of tuples SSC_fine = [] # Suspended Sediment Concentration of the fine sediments # List of one 3D array SSC_sand = [] # Suspended Sediment Concentration of the sand sediments # List of one 3D array + +# ========================================================= +# --- ACOUSTIC NOTES TAB --- +# ========================================================= + +notes = ""