mirror of https://gitlab.com/pamhyr/pamhyr2
pamhyr: Reopen backup if newer than last save in case of crash.
parent
7f3cf46ee1
commit
f8c16d8c7c
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
import time
|
||||||
import logging
|
import logging
|
||||||
import subprocess
|
import subprocess
|
||||||
from queue import Queue
|
from queue import Queue
|
||||||
|
|
@ -611,12 +612,16 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
self.conf.set_last_study(self._study.filename)
|
self.conf.set_last_study(self._study.filename)
|
||||||
|
|
||||||
def _backup(self):
|
def _backup(self):
|
||||||
|
logger.debug("Backup signal...")
|
||||||
if not self.conf.backup_enable:
|
if not self.conf.backup_enable:
|
||||||
return
|
return
|
||||||
|
|
||||||
if self._study is None:
|
if self._study is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if self._study.is_saved:
|
||||||
|
return
|
||||||
|
|
||||||
old = self._study.filename
|
old = self._study.filename
|
||||||
file_name = ""
|
file_name = ""
|
||||||
if old == "" or old is None:
|
if old == "" or old is None:
|
||||||
|
|
@ -634,7 +639,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
try:
|
try:
|
||||||
sql_request_count = self._study.sql_save_request_count()
|
sql_request_count = self._study.sql_save_request_count()
|
||||||
progress = QProgressDialog(
|
progress = QProgressDialog(
|
||||||
"Saving...", None,
|
"Backup...", None,
|
||||||
0, sql_request_count,
|
0, sql_request_count,
|
||||||
parent=self
|
parent=self
|
||||||
)
|
)
|
||||||
|
|
@ -673,7 +678,14 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
res = dlg.exec()
|
res = dlg.exec()
|
||||||
|
|
||||||
if res == QMessageBox.Ok:
|
if res == QMessageBox.Ok:
|
||||||
self.open_study(self.conf.last_study)
|
old = self.conf.last_study
|
||||||
|
file = self.dialog_reopen_study_select_backup(
|
||||||
|
self.conf.last_study
|
||||||
|
)
|
||||||
|
|
||||||
|
self.open_study(file)
|
||||||
|
self._study.filename = old
|
||||||
|
self.conf.set_last_study(old)
|
||||||
return True
|
return True
|
||||||
elif res == QMessageBox.Open:
|
elif res == QMessageBox.Open:
|
||||||
self.open_model()
|
self.open_model()
|
||||||
|
|
@ -681,6 +693,19 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
elif res == QMessageBox.Cancel:
|
elif res == QMessageBox.Cancel:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def dialog_reopen_study_select_backup(self, filename):
|
||||||
|
file = self.conf.last_study
|
||||||
|
backup = self.conf.last_study + ".backup"
|
||||||
|
|
||||||
|
if os.path.exists(backup):
|
||||||
|
file_modified_date = time.ctime(os.path.getmtime(file))
|
||||||
|
backup_modified_date = time.ctime(os.path.getmtime(backup))
|
||||||
|
if backup_modified_date > file_modified_date:
|
||||||
|
logger.info(f"Select backup ({backup})")
|
||||||
|
file = backup
|
||||||
|
|
||||||
|
return file
|
||||||
|
|
||||||
def dialog_close(self, cancel=True):
|
def dialog_close(self, cancel=True):
|
||||||
dlg = QMessageBox(self)
|
dlg = QMessageBox(self)
|
||||||
|
|
||||||
|
|
@ -811,7 +836,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
|
||||||
dialog.setFileMode(QFileDialog.FileMode.ExistingFile)
|
dialog.setFileMode(QFileDialog.FileMode.ExistingFile)
|
||||||
dialog.setDefaultSuffix(".pamhyr")
|
dialog.setDefaultSuffix(".pamhyr")
|
||||||
# dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden)
|
# dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden)
|
||||||
dialog.setNameFilters(['PamHyr (*.pamhyr)'])
|
dialog.setNameFilters(['PamHyr (*.pamhyr)', 'PamHyr backup (*.pamhyr.backup)'])
|
||||||
dialog.setDirectory(os.path.dirname(self.conf.last_study))
|
dialog.setDirectory(os.path.dirname(self.conf.last_study))
|
||||||
|
|
||||||
if dialog.exec_():
|
if dialog.exec_():
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue