From b6f808e65ce5e522ece6af4b128c1ffd72d33ec6 Mon Sep 17 00:00:00 2001 From: Agnibho Mondal Date: Fri, 10 Nov 2023 01:52:54 +0530 Subject: [PATCH] Reload presets after edit --- editpreset.py | 5 ++++- preset.py | 28 ++++++++++++++++------------ window.py | 28 +++++++++++++++++++++------- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/editpreset.py b/editpreset.py index ce9d145..e5cbd8b 100644 --- a/editpreset.py +++ b/editpreset.py @@ -7,11 +7,13 @@ from PyQt6.QtWidgets import QWidget, QMainWindow, QVBoxLayout, QHBoxLayout, QPushButton, QComboBox, QTextEdit, QTableView, QMessageBox from PyQt6.QtGui import QIcon, QStandardItemModel, QStandardItem +from PyQt6.QtCore import pyqtSignal from config import config import logging, os, csv class EditPreset(QMainWindow): + presetEdited=pyqtSignal() editors=[] model=QStandardItemModel() @@ -59,7 +61,8 @@ class EditPreset(QMainWindow): if row[0].strip()!="" or row[1].strip()!="": writer.writerow(row) self.load(file) - QMessageBox.information(self,"File saved", "Changes saved. Please restart the program.") + self.presetEdited.emit() + QMessageBox.information(self,"File saved", "Edited data has been saved.") except Exception as e: logging.exception(e) diff --git a/preset.py b/preset.py index c36b1c9..febcd62 100644 --- a/preset.py +++ b/preset.py @@ -22,19 +22,23 @@ class Preset(): def load(self, skip_first=True, text_as_key=False): try: buf={} - for file in glob(os.path.join(config["preset_directory"], self.target+"*"+".csv")): - with open(file, "r") as f: - reader=csv.reader(f, delimiter=config["preset_delimiter"]) - if skip_first: - next(reader) - for row in reader: - try: - self.data[row[0]]=row[1] - if text_as_key: - buf[row[1].strip()]=row[1] - except IndexError as e: - logging.warning(e) + filelist=glob(os.path.join(config["preset_directory"], self.target+"*"+".csv")) + filelist.append(filelist.pop(filelist.index(os.path.join(config["preset_directory"], self.target+".csv")))) + for file in filelist: + if(file!=os.path.join(config["preset_directory"], self.target+".csv")): + with open(file, "r") as f: + reader=csv.reader(f, delimiter=config["preset_delimiter"]) + if skip_first: + next(reader) + for row in reader: + try: + self.data[row[0]]=row[1] + if text_as_key: + buf[row[1].strip()]=row[1] + except IndexError as e: + logging.warning(e) self.data = buf | self.data + self.data=dict(sorted(self.data.items())) except FileNotFoundError as e: logging.warning(e) except IndexError as e: diff --git a/window.py b/window.py index 92c1289..2da85af 100644 --- a/window.py +++ b/window.py @@ -512,6 +512,25 @@ class MainWindow(QMainWindow): self.input_age.setText("") self.input_age.setEnabled(False) + def load_presets(self): + self.preset_note=Preset("note") + self.preset_report=Preset("report") + self.preset_advice=Preset("advice") + self.preset_investigation=Preset("investigation") + self.preset_medication=Preset("medication", text_as_key=True) + self.preset_additional=Preset("additional") + self.preset_certificate=Preset("certificate") + + def reload_presets(self): + self.load_presets() + self.input_note_preset.addItems(self.preset_note.data.keys()) + self.input_report_preset.addItems(self.preset_note.data.keys()) + self.input_advice_preset.addItems(self.preset_note.data.keys()) + self.input_investigation_preset.addItems(self.preset_note.data.keys()) + self.input_medication_preset.addItems(self.preset_note.data.keys()) + self.input_additional_preset.addItems(self.preset_note.data.keys()) + self.input_certificate_preset.addItems(self.preset_note.data.keys()) + def confirm_close(self): self.update_instance() flag=(self.save_state==md5(self.prescription.get_json().encode()).hexdigest() or QMessageBox.StandardButton.Yes==QMessageBox.question(self,"Confirm action", "Unsaved changes may be lost. Continue?")) @@ -537,13 +556,7 @@ class MainWindow(QMainWindow): icon_refresh=QIcon(os.path.join(config["resource"], "icon_refresh.svg")) icon_view=QIcon(os.path.join(config["resource"], "icon_view.svg")) - self.preset_note=Preset("note") - self.preset_report=Preset("report") - self.preset_advice=Preset("advice") - self.preset_investigation=Preset("investigation") - self.preset_medication=Preset("medication", text_as_key=True) - self.preset_additional=Preset("additional") - self.preset_certificate=Preset("certificate") + self.load_presets() action_new=QAction("New File", self) action_new.setShortcut("Ctrl+N") @@ -939,6 +952,7 @@ class MainWindow(QMainWindow): self.viewbox=ViewBox() self.index=Index() self.edit_preset=EditPreset() + self.edit_preset.presetEdited.connect(self.reload_presets) self.installer=Installer() self.index.signal_open.connect(self.cmd_open) self.index.signal_copy.connect(self.cmd_copy) -- 2.39.5