]> Softwares of Agnibho - medscript.git/commitdiff
Reload presets after edit
authorAgnibho Mondal <mondal@agnibho.com>
Thu, 9 Nov 2023 20:22:54 +0000 (01:52 +0530)
committerAgnibho Mondal <mondal@agnibho.com>
Thu, 9 Nov 2023 20:22:54 +0000 (01:52 +0530)
editpreset.py
preset.py
window.py

index ce9d1455afe87acb68182b4f5a05d6a4da95dd46..e5cbd8b743e8aa613c3150f4df577f7a72d1485d 100644 (file)
@@ -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)
 
index c36b1c92978732c50490d3e6ac358b79227ae9d8..febcd62df2e98287eabc4656b811f72547ee2144 100644 (file)
--- 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:
index 92c128948c18c345aeed60e7e940c77fd92043a1..2da85afe7f2e586d50ebed8529af6393c503358c 100644 (file)
--- 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)