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):
|
||||
|
Loading…
Reference in New Issue
Block a user