diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index e29c23d0f..413886d91 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -68,6 +68,10 @@ class ThemeManager(QtGui.QWidget): self.ThemeListWidget.setAlternatingRowColors(True) self.ThemeListWidget.setIconSize(QtCore.QSize(88,50)) self.Layout.addWidget(self.ThemeListWidget) + #Signals + QtCore.QObject.connect(self.ThemeListWidget, + QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.changeGlobal) + #Variables self.themelist = [] self.path = os.path.join(ConfigHelper.get_data_path(), u'themes') self.checkThemesExists(self.path) @@ -77,6 +81,21 @@ class ThemeManager(QtGui.QWidget): self.servicePath = self.config.get_data_path() self.global_theme = unicode(self.config.get_config(u'theme global theme', u'')) + def changeGlobal(self, index): + for count in range (0, self.ThemeListWidget.count()): + item = self.ThemeListWidget.item(count) + oldName = item.text() + #reset the old name + if oldName != unicode(item.data(QtCore.Qt.UserRole).toString()): + self.ThemeListWidget.item(count).setText(unicode(item.data(QtCore.Qt.UserRole).toString())) + #Set the new name + if count == index.row(): + self.global_theme = unicode(self.ThemeListWidget.item(count).text()) + name = (u'(%s):%s' % (translate(u'ThemeManager', u'default'), self.global_theme)) + self.ThemeListWidget.item(count).setText(name) + self.config.set_config(u'theme global theme', self.global_theme) + self.push_themes() + def onAddTheme(self): self.amendThemeForm.loadTheme(None) self.amendThemeForm.exec_() @@ -99,6 +118,7 @@ class ThemeManager(QtGui.QWidget): translate(u'ThemeManager', u'You are unable to delete the default theme!'), QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok)) else: + self.themelist.remove(theme) th = theme + u'.png' row = self.ThemeListWidget.row(item) self.ThemeListWidget.takeItem(row) @@ -114,7 +134,7 @@ class ThemeManager(QtGui.QWidget): pass #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.loadThemes() + self.push_themes() def onExportTheme(self): pass @@ -156,6 +176,9 @@ class ThemeManager(QtGui.QWidget): item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(textName)) self.ThemeListWidget.addItem(item_name) self.themelist.append(textName) + self.push_themes() + + def push_themes(self): self.parent.EventManager.post_event(Event(EventType.ThemeListChanged)) self.parent.ServiceManagerContents.updateThemeList(self.getThemes()) self.parent.settingsForm.ThemesTab.updateThemeList(self.getThemes()) diff --git a/openlp/core/ui/themestab.py b/openlp/core/ui/themestab.py index 3e33a3808..7b18a9917 100644 --- a/openlp/core/ui/themestab.py +++ b/openlp/core/ui/themestab.py @@ -147,6 +147,8 @@ class ThemesTab(SettingsTab): """ Called from ThemeManager when the Themes have changed """ + #reload as may have been triggered by the ThemeManager + self.global_theme = self.config.get_config(u'theme global theme', u'') self.DefaultComboBox.clear() for theme in theme_list: self.DefaultComboBox.addItem(theme)