2023-04-17 10:17:01 +00:00
|
|
|
from PyQt6 import QtCore, uic
|
|
|
|
from PyQt6.QtWidgets import QDialogButtonBox
|
2022-03-28 08:10:25 +00:00
|
|
|
from vorta.i18n import trans_late, translate
|
2021-11-17 09:14:11 +00:00
|
|
|
from vorta.store.models import BackupProfileModel
|
2022-03-28 08:10:25 +00:00
|
|
|
from vorta.utils import get_asset
|
2018-11-17 08:51:53 +00:00
|
|
|
|
|
|
|
uifile = get_asset('UI/profileadd.ui')
|
|
|
|
AddProfileUI, AddProfileBase = uic.loadUiType(uifile)
|
|
|
|
|
|
|
|
|
|
|
|
class AddProfileWindow(AddProfileBase, AddProfileUI):
|
2020-11-19 07:44:07 +00:00
|
|
|
profile_changed = QtCore.pyqtSignal(str, int)
|
|
|
|
|
2021-03-01 08:03:39 +00:00
|
|
|
def __init__(self, parent=None):
|
2018-11-17 08:51:53 +00:00
|
|
|
super().__init__(parent)
|
|
|
|
self.setupUi(self)
|
2023-04-17 10:17:01 +00:00
|
|
|
self.setAttribute(QtCore.Qt.WidgetAttribute.WA_DeleteOnClose)
|
2018-11-17 08:51:53 +00:00
|
|
|
self.edited_profile = None
|
|
|
|
|
|
|
|
self.buttonBox.rejected.connect(self.close)
|
|
|
|
self.buttonBox.accepted.connect(self.save)
|
2020-06-22 08:05:55 +00:00
|
|
|
self.profileNameField.textChanged.connect(self.button_validation)
|
2018-11-17 08:51:53 +00:00
|
|
|
|
2023-04-17 10:17:01 +00:00
|
|
|
self.buttonBox.button(QDialogButtonBox.StandardButton.Save).setText(self.tr("Save"))
|
|
|
|
self.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).setText(self.tr("Cancel"))
|
2019-02-08 04:44:05 +00:00
|
|
|
|
2021-03-01 08:03:39 +00:00
|
|
|
self.name_blank = trans_late('AddProfileWindow', 'Please enter a profile name.')
|
|
|
|
self.name_exists = trans_late('AddProfileWindow', 'A profile with this name already exists.')
|
2020-06-22 08:05:55 +00:00
|
|
|
# Call validate to set inital messages
|
2023-04-17 10:17:01 +00:00
|
|
|
self.buttonBox.button(QDialogButtonBox.StandardButton.Save).setEnabled(self.validate())
|
2020-06-22 08:05:55 +00:00
|
|
|
|
2018-11-17 08:51:53 +00:00
|
|
|
def _set_status(self, text):
|
|
|
|
self.errorText.setText(text)
|
|
|
|
self.errorText.repaint()
|
|
|
|
|
|
|
|
def save(self):
|
2020-06-22 08:05:55 +00:00
|
|
|
new_profile = BackupProfileModel(name=self.profileNameField.text())
|
|
|
|
new_profile.save()
|
2020-11-19 07:44:07 +00:00
|
|
|
self.profile_changed.emit(new_profile.name, new_profile.id)
|
2020-06-22 08:05:55 +00:00
|
|
|
self.accept()
|
|
|
|
|
|
|
|
def button_validation(self):
|
2023-04-17 10:17:01 +00:00
|
|
|
self.buttonBox.button(QDialogButtonBox.StandardButton.Save).setEnabled(self.validate())
|
2018-11-17 08:51:53 +00:00
|
|
|
|
|
|
|
def validate(self):
|
|
|
|
name = self.profileNameField.text()
|
2018-12-04 02:58:12 +00:00
|
|
|
# A name was entered?
|
2018-11-17 08:51:53 +00:00
|
|
|
if len(name) == 0:
|
2021-03-01 08:03:39 +00:00
|
|
|
self._set_status(translate('AddProfileWindow', self.name_blank))
|
2018-11-17 08:51:53 +00:00
|
|
|
return False
|
|
|
|
|
|
|
|
# Profile with this name already exists?
|
2018-11-22 00:43:37 +00:00
|
|
|
exists = BackupProfileModel.select().where(BackupProfileModel.name == name).count()
|
2018-11-17 08:51:53 +00:00
|
|
|
if exists > 0:
|
2021-03-01 08:03:39 +00:00
|
|
|
self._set_status(translate('AddProfileWindow', self.name_exists))
|
2018-11-17 08:51:53 +00:00
|
|
|
return False
|
|
|
|
|
2022-03-28 08:10:25 +00:00
|
|
|
self._set_status('')
|
2018-11-17 08:51:53 +00:00
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
|
|
class EditProfileWindow(AddProfileWindow):
|
2021-03-01 08:03:39 +00:00
|
|
|
def __init__(self, parent=None, rename_existing_id=None):
|
|
|
|
super().__init__(parent)
|
|
|
|
existing_profile = BackupProfileModel.get(id=rename_existing_id)
|
|
|
|
self.profileNameField.setText(existing_profile.name)
|
|
|
|
self.existing_id = rename_existing_id
|
|
|
|
self.modalTitle.setText(self.tr('Rename Profile'))
|
|
|
|
|
2018-11-17 08:51:53 +00:00
|
|
|
def save(self):
|
2020-06-22 08:05:55 +00:00
|
|
|
renamed_profile = BackupProfileModel.get(id=self.existing_id)
|
|
|
|
renamed_profile.name = self.profileNameField.text()
|
|
|
|
renamed_profile.save()
|
2020-11-19 07:44:07 +00:00
|
|
|
self.profile_changed.emit(renamed_profile.name, renamed_profile.id)
|
2020-06-22 08:05:55 +00:00
|
|
|
self.accept()
|