Commit f8c16d8c authored by Pierre-Antoine Rouby's avatar Pierre-Antoine Rouby
Browse files

pamhyr: Reopen backup if newer than last save in case of crash.

Showing with 28 additions and 3 deletions
+28 -3
......@@ -18,6 +18,7 @@
import os
import sys
import time
import logging
import subprocess
from queue import Queue
......@@ -611,12 +612,16 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
self.conf.set_last_study(self._study.filename)
def _backup(self):
logger.debug("Backup signal...")
if not self.conf.backup_enable:
return
if self._study is None:
return
if self._study.is_saved:
return
old = self._study.filename
file_name = ""
if old == "" or old is None:
......@@ -634,7 +639,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
try:
sql_request_count = self._study.sql_save_request_count()
progress = QProgressDialog(
"Saving...", None,
"Backup...", None,
0, sql_request_count,
parent=self
)
......@@ -673,7 +678,14 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
res = dlg.exec()
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
elif res == QMessageBox.Open:
self.open_model()
......@@ -681,6 +693,19 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
elif res == QMessageBox.Cancel:
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):
dlg = QMessageBox(self)
......@@ -811,7 +836,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
dialog.setFileMode(QFileDialog.FileMode.ExistingFile)
dialog.setDefaultSuffix(".pamhyr")
# 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))
if dialog.exec_():
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment