forked from openlp/openlp
Fix theme delete / rename issue with plugin stored values
Fixes: https://launchpad.net/bugs/693202
This commit is contained in:
parent
ca42bfc455
commit
0e064c9928
|
@ -223,6 +223,8 @@ class ThemeManager(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
Renames an existing theme to a new name
|
Renames an existing theme to a new name
|
||||||
"""
|
"""
|
||||||
|
action = unicode(translate('OpenLP.ThemeManager', 'Rename'))
|
||||||
|
if self._validate_theme_action(action):
|
||||||
item = self.themeListWidget.currentItem()
|
item = self.themeListWidget.currentItem()
|
||||||
oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
|
oldThemeName = unicode(item.data(QtCore.Qt.UserRole).toString())
|
||||||
self.fileRenameForm.fileNameEdit.setText(oldThemeName)
|
self.fileRenameForm.fileNameEdit.setText(oldThemeName)
|
||||||
|
@ -286,44 +288,10 @@ class ThemeManager(QtGui.QWidget):
|
||||||
"""
|
"""
|
||||||
Delete a theme
|
Delete a theme
|
||||||
"""
|
"""
|
||||||
self.global_theme = unicode(QtCore.QSettings().value(
|
action = unicode(translate('OpenLP.ThemeManager', 'Delete'))
|
||||||
self.settingsSection + u'/global theme',
|
if self._validate_theme_action(action):
|
||||||
QtCore.QVariant(u'')).toString())
|
|
||||||
if check_item_selected(self.themeListWidget,
|
|
||||||
translate('OpenLP.ThemeManager',
|
|
||||||
'You must select a theme to delete.')):
|
|
||||||
item = self.themeListWidget.currentItem()
|
item = self.themeListWidget.currentItem()
|
||||||
theme = unicode(item.text())
|
theme = unicode(item.text())
|
||||||
# confirm deletion
|
|
||||||
answer = QtGui.QMessageBox.question(self,
|
|
||||||
translate('OpenLP.ThemeManager', 'Delete Confirmation'),
|
|
||||||
unicode(translate('OpenLP.ThemeManager', 'Delete %s theme?'))
|
|
||||||
% theme,
|
|
||||||
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
|
|
||||||
QtGui.QMessageBox.No), QtGui.QMessageBox.No)
|
|
||||||
if answer == QtGui.QMessageBox.No:
|
|
||||||
return
|
|
||||||
# should be the same unless default
|
|
||||||
if theme != unicode(item.data(QtCore.Qt.UserRole).toString()):
|
|
||||||
QtGui.QMessageBox.critical(self,
|
|
||||||
translate('OpenLP.ThemeManager', 'Error'),
|
|
||||||
translate('OpenLP.ThemeManager',
|
|
||||||
'You are unable to delete the default theme.'))
|
|
||||||
else:
|
|
||||||
for plugin in self.parent.pluginManager.plugins:
|
|
||||||
if plugin.usesTheme(theme):
|
|
||||||
QtGui.QMessageBox.critical(self,
|
|
||||||
translate('OpenLP.ThemeManager', 'Error'),
|
|
||||||
unicode(translate('OpenLP.ThemeManager',
|
|
||||||
'Theme %s is used in the %s plugin.')) % \
|
|
||||||
(theme, plugin.name))
|
|
||||||
return
|
|
||||||
if unicode(self.serviceComboBox.currentText()) == theme:
|
|
||||||
QtGui.QMessageBox.critical(self,
|
|
||||||
translate('OpenLP.ThemeManager', 'Error'),
|
|
||||||
unicode(translate('OpenLP.ThemeManager',
|
|
||||||
'Theme %s is used by the service manager.')) % theme)
|
|
||||||
return
|
|
||||||
row = self.themeListWidget.row(item)
|
row = self.themeListWidget.row(item)
|
||||||
self.themeListWidget.takeItem(row)
|
self.themeListWidget.takeItem(row)
|
||||||
self.deleteTheme(theme)
|
self.deleteTheme(theme)
|
||||||
|
@ -782,3 +750,49 @@ class ThemeManager(QtGui.QWidget):
|
||||||
theme.parse(themeXml)
|
theme.parse(themeXml)
|
||||||
theme.extend_image_filename(path)
|
theme.extend_image_filename(path)
|
||||||
return theme
|
return theme
|
||||||
|
|
||||||
|
def _validate_theme_action(self, action):
|
||||||
|
"""
|
||||||
|
Check to see if theme has been selected and the destructive action
|
||||||
|
is allowed.
|
||||||
|
"""
|
||||||
|
self.global_theme = unicode(QtCore.QSettings().value(
|
||||||
|
self.settingsSection + u'/global theme',
|
||||||
|
QtCore.QVariant(u'')).toString())
|
||||||
|
if check_item_selected(self.themeListWidget,
|
||||||
|
unicode(translate('OpenLP.ThemeManager',
|
||||||
|
'You must select a theme to %s.')) % action):
|
||||||
|
item = self.themeListWidget.currentItem()
|
||||||
|
theme = unicode(item.text())
|
||||||
|
# confirm deletion
|
||||||
|
answer = QtGui.QMessageBox.question(self,
|
||||||
|
unicode(translate('OpenLP.ThemeManager', '%s Confirmation'))
|
||||||
|
% action,
|
||||||
|
unicode(translate('OpenLP.ThemeManager', '%s %s theme?'))
|
||||||
|
% (action, theme),
|
||||||
|
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Yes |
|
||||||
|
QtGui.QMessageBox.No), QtGui.QMessageBox.No)
|
||||||
|
if answer == QtGui.QMessageBox.No:
|
||||||
|
return False
|
||||||
|
# should be the same unless default
|
||||||
|
if theme != unicode(item.data(QtCore.Qt.UserRole).toString()):
|
||||||
|
QtGui.QMessageBox.critical(self,
|
||||||
|
translate('OpenLP.ThemeManager', 'Error'),
|
||||||
|
translate('OpenLP.ThemeManager',
|
||||||
|
'You are unable to delete the default theme.'))
|
||||||
|
else:
|
||||||
|
for plugin in self.parent.pluginManager.plugins:
|
||||||
|
if plugin.usesTheme(theme):
|
||||||
|
QtGui.QMessageBox.critical(self,
|
||||||
|
translate('OpenLP.ThemeManager', 'Error'),
|
||||||
|
unicode(translate('OpenLP.ThemeManager',
|
||||||
|
'Theme %s is used in the %s plugin.')) % \
|
||||||
|
(theme, plugin.name))
|
||||||
|
return False
|
||||||
|
if unicode(self.serviceComboBox.currentText()) == theme:
|
||||||
|
QtGui.QMessageBox.critical(self,
|
||||||
|
translate('OpenLP.ThemeManager', 'Error'),
|
||||||
|
unicode(translate('OpenLP.ThemeManager',
|
||||||
|
'Theme %s is used by the service manager.')) % theme)
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
Loading…
Reference in New Issue