2018-10-29 05:12:45 +00:00
|
|
|
from PyQt5 import uic
|
2018-10-27 17:24:34 +00:00
|
|
|
from PyQt5.QtWidgets import QFileDialog
|
2018-10-29 05:12:45 +00:00
|
|
|
from ..models import SourceDirModel
|
|
|
|
from ..utils import get_relative_asset
|
2018-10-27 17:24:34 +00:00
|
|
|
|
2018-10-29 05:12:45 +00:00
|
|
|
uifile = get_relative_asset('UI/sourcetab.ui', __file__)
|
2018-10-27 17:24:34 +00:00
|
|
|
SourceUI, SourceBase = uic.loadUiType(uifile)
|
|
|
|
|
|
|
|
|
|
|
|
class SourceTab(SourceBase, SourceUI):
|
|
|
|
def __init__(self, parent=None):
|
|
|
|
super().__init__(parent)
|
|
|
|
self.setupUi(parent)
|
|
|
|
self.profile = self.window().profile
|
|
|
|
|
|
|
|
self.sourceAdd.clicked.connect(self.source_add)
|
|
|
|
self.sourceRemove.clicked.connect(self.source_remove)
|
|
|
|
for source in SourceDirModel.select():
|
|
|
|
self.sourceDirectoriesWidget.addItem(source.dir)
|
|
|
|
|
2018-10-28 09:35:25 +00:00
|
|
|
self.excludePatternsField.appendPlainText(self.profile.exclude_patterns)
|
|
|
|
self.excludeIfPresentField.appendPlainText(self.profile.exclude_if_present)
|
|
|
|
|
|
|
|
self.excludePatternsField.textChanged.connect(self.save_exclude_patterns)
|
|
|
|
self.excludeIfPresentField.textChanged.connect(self.save_exclude_if_present)
|
|
|
|
|
2018-10-27 17:24:34 +00:00
|
|
|
def source_add(self):
|
|
|
|
options = QFileDialog.Options()
|
|
|
|
options |= QFileDialog.ShowDirsOnly
|
|
|
|
options |= QFileDialog.DontUseNativeDialog
|
|
|
|
fileName = QFileDialog.getExistingDirectory(
|
|
|
|
self, "Choose Backup Directory", "", options=options)
|
|
|
|
if fileName:
|
2018-10-29 05:12:45 +00:00
|
|
|
new_source, created = SourceDirModel.get_or_create(dir=fileName)
|
|
|
|
if created:
|
|
|
|
self.sourceDirectoriesWidget.addItem(fileName)
|
|
|
|
new_source.save()
|
2018-10-27 17:24:34 +00:00
|
|
|
|
|
|
|
def source_remove(self):
|
|
|
|
item = self.sourceDirectoriesWidget.takeItem(self.sourceDirectoriesWidget.currentRow())
|
|
|
|
db_item = SourceDirModel.get(dir=item.text())
|
|
|
|
db_item.delete_instance()
|
|
|
|
item = None
|
2018-10-28 09:35:25 +00:00
|
|
|
|
|
|
|
def save_exclude_patterns(self):
|
|
|
|
self.profile.exclude_patterns = self.excludePatternsField.toPlainText()
|
|
|
|
self.profile.save()
|
|
|
|
|
|
|
|
def save_exclude_if_present(self):
|
|
|
|
self.profile.exclude_if_present = self.excludeIfPresentField.toPlainText()
|
|
|
|
self.profile.save()
|