vorta/src/vorta/views/source_tab.py

63 lines
2.5 KiB
Python
Raw Normal View History

from PyQt5 import uic
from ..models import SourceDirModel, BackupProfileMixin
2018-11-17 11:36:44 +00:00
from ..utils import get_asset, choose_folder_dialog
2018-10-27 17:24:34 +00:00
uifile = get_asset('UI/sourcetab.ui')
2018-10-27 17:24:34 +00:00
SourceUI, SourceBase = uic.loadUiType(uifile)
class SourceTab(SourceBase, SourceUI, BackupProfileMixin):
2018-10-27 17:24:34 +00:00
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(parent)
self.sourceAdd.clicked.connect(self.source_add)
self.sourceRemove.clicked.connect(self.source_remove)
self.excludePatternsField.textChanged.connect(self.save_exclude_patterns)
self.excludeIfPresentField.textChanged.connect(self.save_exclude_if_present)
self.populate_from_profile()
2018-10-27 17:24:34 +00:00
def populate_from_profile(self):
profile = self.profile()
self.excludePatternsField.textChanged.disconnect()
self.excludeIfPresentField.textChanged.disconnect()
self.sourceDirectoriesWidget.clear()
self.excludePatternsField.clear()
self.excludeIfPresentField.clear()
for source in SourceDirModel.select().where(SourceDirModel.profile == profile):
self.sourceDirectoriesWidget.addItem(source.dir)
2018-10-28 09:35:25 +00:00
self.excludePatternsField.appendPlainText(profile.exclude_patterns)
self.excludeIfPresentField.appendPlainText(profile.exclude_if_present)
2018-10-28 09:35:25 +00:00
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):
def receive():
dir = dialog.selectedFiles()
if dir:
new_source, created = SourceDirModel.get_or_create(dir=dir[0], profile=self.profile())
if created:
self.sourceDirectoriesWidget.addItem(dir[0])
new_source.save()
2018-11-21 11:22:47 +00:00
dialog = choose_folder_dialog(self, "Choose Directory to back up")
dialog.open(receive)
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):
profile = self.profile()
profile.exclude_patterns = self.excludePatternsField.toPlainText()
profile.save()
2018-10-28 09:35:25 +00:00
def save_exclude_if_present(self):
profile = self.profile()
profile.exclude_if_present = self.excludeIfPresentField.toPlainText()
profile.save()