issue126-backup #198
| @@ -2,6 +2,7 @@ | ||||
|  | ||||
| import sys | ||||
| import pathlib | ||||
| import os | ||||
| sys.path.append(str(pathlib.Path(__file__).absolute().parent.parent / 'src')) | ||||
|  | ||||
| from nmreval.configs import check_for_config | ||||
| @@ -20,6 +21,18 @@ from gui_qt import App | ||||
| app = App(['Team Rocket FTW!']) | ||||
|  | ||||
| from gui_qt.main.mainwindow import NMRMainWindow | ||||
| from gui_qt.lib.backup import Backup | ||||
|  | ||||
| backuping = Backup() | ||||
| pid = os.getpid() | ||||
|  | ||||
| files = backuping.search_unsaved() | ||||
| print(files) | ||||
|  | ||||
| bck_name = backuping.create_entry(pid) | ||||
| print(sys.executable, sys.argv) | ||||
|  | ||||
| app.aboutToQuit.connect(backuping.close) | ||||
|  | ||||
| mplQt = NMRMainWindow() | ||||
| mplQt.show() | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| # -*- coding: utf-8 -*- | ||||
|  | ||||
| # Form implementation generated from reading ui file 'src/resources/_ui/basewindow.ui' | ||||
| # Form implementation generated from reading ui file 'resources/_ui/basewindow.ui' | ||||
| # | ||||
| # Created by: PyQt5 UI code generator 5.15.9 | ||||
| # Created by: PyQt5 UI code generator 5.15.10 | ||||
| # | ||||
| # WARNING: Any manual changes made to this file will be lost when pyuic5 is | ||||
| # run again.  Do not edit this file unless you know what you are doing. | ||||
|   | ||||
							
								
								
									
										63
									
								
								src/gui_qt/lib/backup.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								src/gui_qt/lib/backup.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| import os | ||||
| import sqlite3 | ||||
|  | ||||
| from ..Qt import QtCore | ||||
|  | ||||
| DB_FILE = '/autohome/dominik/nmreval/nmreval.db' | ||||
|  | ||||
|  | ||||
| class Backup(QtCore.QObject): | ||||
|     def __init__(self): | ||||
|         super().__init__() | ||||
|         self.create_table() | ||||
|         self._pid = None | ||||
|  | ||||
|     def create_table(self): | ||||
|         con = sqlite3.connect(DB_FILE) | ||||
|         con.execute( | ||||
|             "CREATE TABLE IF NOT EXISTS sessions (pid INTEGER NOT NULL, backup_file TEXT NOT NULL );" | ||||
|         ) | ||||
|  | ||||
|     def create_entry(self, pid: int): | ||||
|         con = sqlite3.connect(DB_FILE) | ||||
|         con.execute('INSERT INTO sessions VALUES(?, ?);', | ||||
|                     (pid, f'/autohome/dominik/nmreval/tmp_{pid}.nmr')) | ||||
|         con.commit() | ||||
|         con.close() | ||||
|         self._pid = pid | ||||
|  | ||||
|         return | ||||
|  | ||||
|     def remove_entry(self, pid: int = None): | ||||
|         if pid is None: | ||||
|             pid = self._pid | ||||
|  | ||||
|         con = sqlite3.connect(DB_FILE) | ||||
|         cursor = con.execute('DELETE FROM sessions WHERE pid = ?;', (pid,)) | ||||
|         res = cursor.execute('SELECT COUNT(sessions.pid) FROM sessions GROUP BY sessions.pid;') | ||||
|         con.commit() | ||||
|         print(res.fetchall()) | ||||
|  | ||||
|         con.close() | ||||
|  | ||||
|     def close(self): | ||||
|         self.remove_entry() | ||||
|  | ||||
|     def search_unsaved(self): | ||||
|         con = sqlite3.connect(DB_FILE) | ||||
|         cursor = con.cursor() | ||||
|         res = cursor.execute('SELECT sessions.pid, sessions.backup_file FROM sessions;') | ||||
|         con.commit() | ||||
|         data = res.fetchall() | ||||
|         con.close() | ||||
|  | ||||
|         missing_processes = [] | ||||
|  | ||||
|         for pid, fname in data: | ||||
|             try: | ||||
|                 os.kill(pid, 0) | ||||
|             except ProcessLookupError: | ||||
|                 missing_processes.append((pid, fname)) | ||||
|  | ||||
|         return missing_processes | ||||
|  | ||||
| @@ -22,6 +22,7 @@ from ..graphs.graphwindow import QGraphWindow | ||||
| from ..graphs.movedialog import QMover | ||||
| from ..io.fcbatchreader import QFCReader | ||||
| from ..io.filedialog import * | ||||
| from ..lib.backup import Backup | ||||
| from ..lib.iconloading import make_action_icons, get_icon | ||||
| from ..lib.pg_objects import RegionItem | ||||
| from ..lib.starter import make_starter | ||||
| @@ -54,6 +55,7 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|  | ||||
|         self.management = UpperManagement(self) | ||||
|  | ||||
|  | ||||
|         self.fitlimitvalues = [None, None] | ||||
|         self.fitpreview = [] | ||||
|         self._fit_plot_id = None | ||||
| @@ -89,7 +91,8 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|         self.fit_timer = QtCore.QTimer() | ||||
|         self.fit_timer.setInterval(500) | ||||
|         self.fit_timer.timeout.connect( | ||||
|             lambda: self.status.setText(f'Fit running... ({self.management.fitter.step} evaluations)')) | ||||
|             lambda: self.status.setText(f'Fit running... ({self.management.fitter.step} evaluations)') | ||||
|         ) | ||||
|  | ||||
|     def _init_gui(self): | ||||
|         self.setupUi(self) | ||||
| @@ -235,8 +238,6 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|         self.actionNext_window.triggered.connect(lambda: self.area.activateNextSubWindow()) | ||||
|         self.actionPrevious.triggered.connect(lambda: self.area.activatePreviousSubWindow()) | ||||
|  | ||||
|         self.closeSignal.connect(self.close) | ||||
|  | ||||
|         self.action_norm_max.triggered.connect(lambda: self.management.apply('norm', ('max',))) | ||||
|         self.action_norm_max_abs.triggered.connect(lambda: self.management.apply('norm', ('maxabs',))) | ||||
|         self.action_norm_first.triggered.connect(lambda: self.management.apply('norm', ('first',))) | ||||
| @@ -864,10 +865,6 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|     def item_from_graph(self, item, graph_id): | ||||
|         self.management.graphs[graph_id].remove_external(item) | ||||
|  | ||||
|     def closeEvent(self, evt): | ||||
|         # self._write_settings() | ||||
|         self.close() | ||||
|  | ||||
|     @QtCore.pyqtSlot(int) | ||||
|     def request_data(self, idx): | ||||
|         idd = self.datawidget.get_indexes(idx=idx-1) | ||||
| @@ -1097,6 +1094,8 @@ class NMRMainWindow(QtWidgets.QMainWindow, Ui_BaseWindow): | ||||
|         # remove backup file when closing | ||||
|         self.__backup_path.unlink(missing_ok=True) | ||||
|  | ||||
|         print('Close me', self.sender()) | ||||
|  | ||||
|         super().close() | ||||
|  | ||||
|     def read_state(self): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user