forked from openlp/openlp
Fix up theme handing with rename and copy
This commit is contained in:
parent
c7d3193762
commit
fecad94099
@ -241,7 +241,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
QtCore.QVariant(self.global_theme))
|
QtCore.QVariant(self.global_theme))
|
||||||
Receiver.send_message(u'theme_update_global',
|
Receiver.send_message(u'theme_update_global',
|
||||||
self.global_theme)
|
self.global_theme)
|
||||||
self.pushThemes()
|
self._pushThemes()
|
||||||
|
|
||||||
def onAddTheme(self):
|
def onAddTheme(self):
|
||||||
"""
|
"""
|
||||||
@ -273,6 +273,7 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
for plugin in self.mainwindow.pluginManager.plugins:
|
for plugin in self.mainwindow.pluginManager.plugins:
|
||||||
if plugin.usesTheme(oldThemeName):
|
if plugin.usesTheme(oldThemeName):
|
||||||
plugin.renameTheme(oldThemeName, newThemeName)
|
plugin.renameTheme(oldThemeName, newThemeName)
|
||||||
|
self.loadThemes()
|
||||||
|
|
||||||
def onCopyTheme(self):
|
def onCopyTheme(self):
|
||||||
"""
|
"""
|
||||||
@ -295,7 +296,6 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
log.debug(u'cloneThemeData')
|
log.debug(u'cloneThemeData')
|
||||||
saveTo = None
|
saveTo = None
|
||||||
saveFrom = None
|
saveFrom = None
|
||||||
print themeData.background_type
|
|
||||||
if themeData.background_type == u'image':
|
if themeData.background_type == u'image':
|
||||||
saveTo = os.path.join(self.path, newThemeName,
|
saveTo = os.path.join(self.path, newThemeName,
|
||||||
os.path.split(unicode(themeData.background_filename))[1])
|
os.path.split(unicode(themeData.background_filename))[1])
|
||||||
@ -334,6 +334,10 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
row = self.themeListWidget.row(item)
|
row = self.themeListWidget.row(item)
|
||||||
self.themeListWidget.takeItem(row)
|
self.themeListWidget.takeItem(row)
|
||||||
self.deleteTheme(theme)
|
self.deleteTheme(theme)
|
||||||
|
# As we do not reload the themes, push out the change
|
||||||
|
# Reaload the list as the internal lists and events need
|
||||||
|
# to be triggered
|
||||||
|
self._pushThemes()
|
||||||
|
|
||||||
def deleteTheme(self, theme):
|
def deleteTheme(self, theme):
|
||||||
"""
|
"""
|
||||||
@ -351,10 +355,6 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
shutil.rmtree(os.path.join(self.path, theme).encode(encoding))
|
shutil.rmtree(os.path.join(self.path, theme).encode(encoding))
|
||||||
except OSError:
|
except OSError:
|
||||||
log.exception(u'Error deleting theme %s', theme)
|
log.exception(u'Error deleting theme %s', theme)
|
||||||
# As we do not reload the themes, push out the change
|
|
||||||
# Reaload the list as the internal lists and events need
|
|
||||||
# to be triggered
|
|
||||||
self.pushThemes()
|
|
||||||
|
|
||||||
def onExportTheme(self):
|
def onExportTheme(self):
|
||||||
"""
|
"""
|
||||||
@ -451,9 +451,9 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
QtCore.QVariant(textName))
|
QtCore.QVariant(textName))
|
||||||
self.themeListWidget.addItem(item_name)
|
self.themeListWidget.addItem(item_name)
|
||||||
self.themelist.append(textName)
|
self.themelist.append(textName)
|
||||||
self.pushThemes()
|
self._pushThemes()
|
||||||
|
|
||||||
def pushThemes(self):
|
def _pushThemes(self):
|
||||||
"""
|
"""
|
||||||
Notify listeners that the theme list has been updated
|
Notify listeners that the theme list has been updated
|
||||||
"""
|
"""
|
||||||
@ -573,13 +573,20 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
Called by thememaintenance Dialog to save the theme
|
Called by thememaintenance Dialog to save the theme
|
||||||
and to trigger the reload of the theme list
|
and to trigger the reload of the theme list
|
||||||
"""
|
"""
|
||||||
|
self._writeTheme(theme, imageFrom, imageTo)
|
||||||
|
self.loadThemes()
|
||||||
|
|
||||||
|
def _writeTheme(self, theme, imageFrom, imageTo):
|
||||||
|
"""
|
||||||
|
Writes the theme to the disk and handles the background image if
|
||||||
|
necessary
|
||||||
|
"""
|
||||||
name = theme.theme_name
|
name = theme.theme_name
|
||||||
theme_pretty_xml = theme.extract_formatted_xml()
|
theme_pretty_xml = theme.extract_formatted_xml()
|
||||||
log.debug(u'saveTheme %s %s', name, theme_pretty_xml)
|
log.debug(u'saveTheme %s %s', name, theme_pretty_xml)
|
||||||
theme_dir = os.path.join(self.path, name)
|
theme_dir = os.path.join(self.path, name)
|
||||||
check_directory_exists(theme_dir)
|
check_directory_exists(theme_dir)
|
||||||
theme_file = os.path.join(theme_dir, name + u'.xml')
|
theme_file = os.path.join(theme_dir, name + u'.xml')
|
||||||
print imageTo, self.oldBackgroundImage
|
|
||||||
if imageTo and self.oldBackgroundImage and \
|
if imageTo and self.oldBackgroundImage and \
|
||||||
imageTo != self.oldBackgroundImage:
|
imageTo != self.oldBackgroundImage:
|
||||||
delete_file(self.oldBackgroundImage)
|
delete_file(self.oldBackgroundImage)
|
||||||
@ -592,7 +599,6 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
finally:
|
finally:
|
||||||
if outfile:
|
if outfile:
|
||||||
outfile.close()
|
outfile.close()
|
||||||
print imageFrom, imageTo
|
|
||||||
if imageFrom and imageFrom != imageTo:
|
if imageFrom and imageFrom != imageTo:
|
||||||
try:
|
try:
|
||||||
encoding = get_filesystem_encoding()
|
encoding = get_filesystem_encoding()
|
||||||
@ -602,8 +608,6 @@ class ThemeManager(QtGui.QWidget):
|
|||||||
except IOError:
|
except IOError:
|
||||||
log.exception(u'Failed to save theme image')
|
log.exception(u'Failed to save theme image')
|
||||||
self.generateAndSaveImage(self.path, name, theme)
|
self.generateAndSaveImage(self.path, name, theme)
|
||||||
self.loadThemes()
|
|
||||||
self.pushThemes()
|
|
||||||
|
|
||||||
def generateAndSaveImage(self, dir, name, theme):
|
def generateAndSaveImage(self, dir, name, theme):
|
||||||
log.debug(u'generateAndSaveImage %s %s', dir, name)
|
log.debug(u'generateAndSaveImage %s %s', dir, name)
|
||||||
|
@ -102,7 +102,7 @@ class BiblePlugin(Plugin):
|
|||||||
Called to find out if the bible plugin is currently using a theme.
|
Called to find out if the bible plugin is currently using a theme.
|
||||||
Returns True if the theme is being used, otherwise returns False.
|
Returns True if the theme is being used, otherwise returns False.
|
||||||
"""
|
"""
|
||||||
if self.settings_tab.bible_theme == theme:
|
if unicode(self.settings_tab.bible_theme) == theme:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
@ -119,6 +119,7 @@ class BiblePlugin(Plugin):
|
|||||||
The new name the plugin should now use.
|
The new name the plugin should now use.
|
||||||
"""
|
"""
|
||||||
self.settings_tab.bible_theme = newTheme
|
self.settings_tab.bible_theme = newTheme
|
||||||
|
self.settings_tab.save()
|
||||||
|
|
||||||
def setPluginTextStrings(self):
|
def setPluginTextStrings(self):
|
||||||
"""
|
"""
|
||||||
|
Loading…
Reference in New Issue
Block a user