minimal working db

This commit is contained in:
Dominik Demuth 2023-12-31 15:46:14 +01:00
parent 5ad6456b16
commit 3b19f421ef
4 changed files with 84 additions and 9 deletions

View File

@ -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()

View File

@ -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
View 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

View File

@ -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):