From fba798710412094cc50bac9eb6557e0ab0f63749 Mon Sep 17 00:00:00 2001 From: "Veronica K. B. Olsen" Date: Wed, 26 Jun 2019 15:12:57 +0200 Subject: [PATCH] Connected backup options to preferences dialog --- nw/config.py | 5 +-- nw/gui/configeditor.py | 72 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 68 insertions(+), 9 deletions(-) diff --git a/nw/config.py b/nw/config.py index 1defc18c..6ab2e110 100644 --- a/nw/config.py +++ b/nw/config.py @@ -90,8 +90,7 @@ class Config: self.spellLanguage = "en_GB" # Backup - self.backupPath = None - self.autoBackup = False + self.backupPath = "" self.backupOnClose = False self.askBeforeBackup = False self.minBackupTime = 0 @@ -194,7 +193,6 @@ class Config: ## Backup cnfSec = "Backup" self.backupPath = self._parseLine(cnfParse, cnfSec, "backuppath", self.CNF_STR, self.backupPath) - self.autoBackup = self._parseLine(cnfParse, cnfSec, "autobackup", self.CNF_BOOL, self.autoBackup) self.backupOnClose = self._parseLine(cnfParse, cnfSec, "backuponclose", self.CNF_BOOL, self.backupOnClose) self.askBeforeBackup = self._parseLine(cnfParse, cnfSec, "askbeforebackup", self.CNF_BOOL, self.askBeforeBackup) self.minBackupTime = self._parseLine(cnfParse, cnfSec, "minbackuptime", self.CNF_INT, self.minBackupTime) @@ -259,7 +257,6 @@ class Config: cnfSec = "Backup" cnfParse.add_section(cnfSec) cnfParse.set(cnfSec,"backuppath", str(self.backupPath)) - cnfParse.set(cnfSec,"autobackup", str(self.autoBackup)) cnfParse.set(cnfSec,"backuponclose", str(self.backupOnClose)) cnfParse.set(cnfSec,"askbeforebackup",str(self.askBeforeBackup)) cnfParse.set(cnfSec,"minbackuptime", str(self.minBackupTime)) diff --git a/nw/gui/configeditor.py b/nw/gui/configeditor.py index d90424f8..ebf2855f 100644 --- a/nw/gui/configeditor.py +++ b/nw/gui/configeditor.py @@ -21,7 +21,7 @@ from PyQt5.QtSvg import QSvgWidget from PyQt5.QtWidgets import ( QDialog, QHBoxLayout, QVBoxLayout, QFormLayout, QLineEdit, QPlainTextEdit, QLabel, QWidget, QTabWidget, QDialogButtonBox, QSpinBox, QGroupBox, QComboBox, QMessageBox, - QCheckBox, QGridLayout, QFontComboBox + QCheckBox, QGridLayout, QFontComboBox, QPushButton, QFileDialog ) from nw.enum import nwAlert from nw.constants import nwQuotes @@ -183,12 +183,47 @@ class GuiConfigEditGeneral(QWidget): self.autoSaveForm.addWidget(self.autoSaveProj, 1, 1) self.autoSaveForm.addWidget(QLabel("seconds"), 1, 2) + # Backup + self.projBackup = QGroupBox("Backup", self) + self.projBackupForm = QGridLayout(self) + self.projBackup.setLayout(self.projBackupForm) + + self.projBackupPath = QLineEdit() + if path.isdir(self.mainConf.backupPath): + self.projBackupPath.setText(self.mainConf.backupPath) + + self.projBackupGetPath = QPushButton(QIcon.fromTheme("folder"),"") + self.projBackupGetPath.clicked.connect(self._backupFolder) + + self.projBackupClose = QCheckBox(self) + self.projBackupClose.setToolTip("Backup automatically on project close.") + if self.mainConf.backupOnClose: + self.projBackupClose.setCheckState(Qt.Checked) + else: + self.projBackupClose.setCheckState(Qt.Unchecked) + + self.projBackupTime = QSpinBox(self) + self.projBackupTime.setMinimum(0) + self.projBackupTime.setMaximum(1440) + self.projBackupTime.setSingleStep(10) + self.projBackupTime.setValue(self.mainConf.minBackupTime) + + self.projBackupForm.addWidget(QLabel("Backup Folder"),0, 0) + self.projBackupForm.addWidget(self.projBackupPath, 0, 1, 1, 4) + self.projBackupForm.addWidget(self.projBackupGetPath, 0, 5) + self.projBackupForm.addWidget(QLabel("Run on Close"), 1, 0) + self.projBackupForm.addWidget(self.projBackupClose, 1, 1) + self.projBackupForm.addWidget(QLabel("At Most Every"),1, 2) + self.projBackupForm.addWidget(self.projBackupTime, 1, 3) + self.projBackupForm.addWidget(QLabel("minutes"), 1, 4, 1, 2) + # Assemble - self.outerBox.addWidget(self.guiLook, 0, 0) - self.outerBox.addWidget(self.spellLang, 1, 0) - self.outerBox.addWidget(self.autoSave, 2, 0) + self.outerBox.addWidget(self.guiLook, 0, 0) + self.outerBox.addWidget(self.spellLang, 1, 0) + self.outerBox.addWidget(self.autoSave, 2, 0) + self.outerBox.addWidget(self.projBackup, 3, 0) self.outerBox.setColumnStretch(2, 1) - self.outerBox.setRowStretch(3, 1) + self.outerBox.setRowStretch(4, 1) self.setLayout(self.outerBox) return @@ -203,6 +238,9 @@ class GuiConfigEditGeneral(QWidget): spellLanguage = self.spellLangList.currentData() autoSaveDoc = self.autoSaveDoc.value() autoSaveProj = self.autoSaveProj.value() + backupPath = self.projBackupPath.text() + backupOnClose = self.projBackupClose.isChecked() + minBackupTime = self.projBackupTime.value() # Check if restart is needed needsRestart |= self.mainConf.guiTheme != guiTheme @@ -212,11 +250,35 @@ class GuiConfigEditGeneral(QWidget): self.mainConf.spellLanguage = spellLanguage self.mainConf.autoSaveDoc = autoSaveDoc self.mainConf.autoSaveProj = autoSaveProj + self.mainConf.backupPath = backupPath + self.mainConf.backupOnClose = backupOnClose + self.mainConf.minBackupTime = minBackupTime self.mainConf.confChanged = True return validEntries, needsRestart + ## + # Internal Functions + ## + + def _backupFolder(self): + + currDir = self.projBackupPath.text() + if not path.isdir(currDir): + currDir = "" + + dlgOpt = QFileDialog.Options() + dlgOpt |= QFileDialog.ShowDirsOnly + dlgOpt |= QFileDialog.DontUseNativeDialog + newDir = QFileDialog.getExistingDirectory( + self,"Backup Directory",currDir,options=dlgOpt + ) + if newDir: + self.projBackupPath.setText(newDir) + return True + return False + # END Class GuiConfigEditGeneral class GuiConfigEditEditor(QWidget):