From 0dfe60ef9ff218f7fa727905423826b93d166514 Mon Sep 17 00:00:00 2001 From: Tim Bentley Date: Tue, 7 Apr 2009 20:03:36 +0100 Subject: [PATCH] Fix Problems from last merge review Get Custom Plugin theme combo working following event post from ThemeManager --- openlp/core/__init__.py | 5 +-- openlp/core/ui/thememanager.py | 14 +++++-- openlp/plugins/custom/customplugin.py | 11 ++++-- openlp/plugins/custom/forms/editcustomform.py | 37 +++++++++++++------ 4 files changed, 44 insertions(+), 23 deletions(-) diff --git a/openlp/core/__init__.py b/openlp/core/__init__.py index f795b6040..b19fe8fdf 100644 --- a/openlp/core/__init__.py +++ b/openlp/core/__init__.py @@ -29,8 +29,5 @@ def translate(context, text): return QtGui.QApplication.translate(context, text, None, QtGui.QApplication.UnicodeUTF8) def fileToXML(xmlfile): - file=open(xmlfile) - xml =''.join(file.readlines()) # read the file and change list to a string - file.close() - return xml + return open(xmlfile).read() diff --git a/openlp/core/ui/thememanager.py b/openlp/core/ui/thememanager.py index 46638e819..122e785c1 100644 --- a/openlp/core/ui/thememanager.py +++ b/openlp/core/ui/thememanager.py @@ -52,6 +52,7 @@ class ThemeData(QAbstractItemModel): """ global log log=logging.getLogger(u'ThemeData') + def __init__(self): QAbstractItemModel.__init__(self) self.items=[] @@ -132,9 +133,13 @@ class ThemeData(QAbstractItemModel): log.info(u'Get Item:%d -> %s' %(row, str(self.items))) return self.items[row] + def getList(self): + filelist = [item[3] for item in self.items]; + return filelist + class ThemeManager(QWidget): """ - Manages the orders of Theme. C + Manages the orders of Theme. """ global log log=logging.getLogger(u'ThemeManager') @@ -178,6 +183,7 @@ class ThemeManager(QWidget): self.eventManager = eventManager def onAddTheme(self): + self.amendThemeForm.loadTheme(None) self.amendThemeForm.exec_() def onEditTheme(self): @@ -213,7 +219,7 @@ class ThemeManager(QWidget): self.eventManager.post_event(Event(EventType.ThemeListChanged)) def getThemes(self): - return self.themelist + return self.Theme_data.getList() def checkThemesExists(self, dir): log.debug(u'check themes') @@ -232,7 +238,7 @@ class ThemeManager(QWidget): fullpath = os.path.join(dir, file) names = file.split(u'/') xml_data = zip.read(file) - if file.endswith(u'.xml'): + if os.path.splitext (file) [1].lower () in [u'.xml']: if self.checkVersion1(xml_data): filexml = self.migrateVersion122(filename, fullpath, xml_data) outfile = open(fullpath, 'w') @@ -240,7 +246,7 @@ class ThemeManager(QWidget): outfile.close() self.generateImage(dir,names[0], filexml) else: - if file.endswith(u'.bmp'): + if os.path.splitext (file) [1].lower () in [u'.bmp']: if fullpath is not os.path.join(dir, file): outfile = open(fullpath, 'w') outfile.write(zip.read(file)) diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py index d4ed4f36e..f12b51cec 100644 --- a/openlp/plugins/custom/customplugin.py +++ b/openlp/plugins/custom/customplugin.py @@ -23,15 +23,17 @@ from PyQt4 import QtCore, QtGui from openlp.core.resources import * from openlp.core.lib import Plugin, Event +from openlp.core.lib import EventType from forms import EditCustomForm from openlp.plugins.custom.lib import CustomManager, CustomTab, CustomMediaItem, CustomServiceItem + class CustomPlugin(Plugin): global log log=logging.getLogger(u'CustomPlugin') log.info(u'Custom Plugin loaded') - + def __init__(self, plugin_helpers): # Call the parent constructor Plugin.__init__(self, u'Custom', u'1.9.0', plugin_helpers) @@ -49,9 +51,12 @@ class CustomPlugin(Plugin): # Create the CustomManagerItem object self.media_item = CustomMediaItem(self, self.icon, u'Custom Slides') return self.media_item - + def handle_event(self, event): """ Handle the event contained in the event object. """ - log.debug(u'Handle event called with event %s' %event.get_type()) + log.debug(u'Handle event called with event %s' %event.event_type) + if event.event_type == EventType.ThemeListChanged: + log.debug(u'New Theme request received') + self.edit_custom_form.loadThemes(self.theme_manager.getThemes()) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index b01ce9bb9..ef934ac7d 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -32,7 +32,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): Constructor """ QtGui.QDialog.__init__(self, parent) - #self.parent = parent + #self.parent = parent self.setupUi(self) # Connecting signals and slots QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"), self.rejected) @@ -43,18 +43,18 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): QtCore.QObject.connect(self.DeleteButton, QtCore.SIGNAL("pressed()"), self.onDeleteButtonPressed) QtCore.QObject.connect(self.ClearButton, QtCore.SIGNAL("pressed()"), self.onClearButtonPressed) QtCore.QObject.connect(self.UpButton, QtCore.SIGNAL("pressed()"), self.onUpButtonPressed) - QtCore.QObject.connect(self.DownButton, QtCore.SIGNAL("pressed()"), self.onDownButtonPressed) - QtCore.QObject.connect(self.TitleEdit, QtCore.SIGNAL("lostFocus()"), self.validate) + QtCore.QObject.connect(self.DownButton, QtCore.SIGNAL("pressed()"), self.onDownButtonPressed) + QtCore.QObject.connect(self.TitleEdit, QtCore.SIGNAL("lostFocus()"), self.validate) - QtCore.QObject.connect(self.VerseListView, + QtCore.QObject.connect(self.VerseListView, QtCore.SIGNAL("itemDoubleClicked(QListWidgetItem*)"), self.onVerseListViewSelected) - QtCore.QObject.connect(self.VerseListView, + QtCore.QObject.connect(self.VerseListView, QtCore.SIGNAL("itemClicked(QListWidgetItem*)"), self.onVerseListViewPressed) # Create other objects and forms self.custommanager = custommanager self.initialise() - self.VerseListView.setAlternatingRowColors(True) - + self.VerseListView.setAlternatingRowColors(True) + def initialise(self): self.valid = True self.DeleteButton.setEnabled(False) @@ -64,10 +64,15 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): self.CreditEdit.setText('') self.VerseTextEdit.clear() self.VerseListView.clear() - #make sure we have a new item + #make sure we have a new item self.customSlide = CustomSlide() self.ThemecomboBox.addItem(u'') - #self.theme_manager.getThemes() + + def loadThemes(self, themelist): + self.ThemecomboBox.clear() + self.ThemecomboBox.addItem(u'') + for themename in themelist: + self.ThemecomboBox.addItem(themename) def loadCustom(self, id): self.customSlide = CustomSlide() @@ -76,12 +81,19 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): self.customSlide = self.custommanager.get_custom(id) self.TitleEdit.setText(self.customSlide.title) self.CreditEdit.setText(self.customSlide.title) - + songXML=SongXMLParser(self.customSlide.text) verseList = songXML.get_verses() for verse in verseList: self.VerseListView.addItem(verse[1]) + theme = str(self.customSlide.theme_name) + id = self.ThemecomboBox.findText(theme, QtCore.Qt.MatchExactly) + if id == -1: + id = 0 # Not Found + self.ThemecomboBox.setCurrentIndex(id) self.validate() + else: + self.ThemecomboBox.setCurrentIndex(0) def accept(self): self.validate() @@ -96,6 +108,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): self.customSlide.title = unicode(self.TitleEdit.displayText()) self.customSlide.text = unicode(sxml.extract_xml()) self.customSlide.credits = unicode(self.CreditEdit.displayText()) + self.customSlide.theme_name = unicode(self.ThemecomboBox.currentText()) self.custommanager.save_slide(self.customSlide) self.close() @@ -114,7 +127,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): if selectedRow != self.VerseListView.count() - 1: # zero base arrays qw = self.VerseListView.takeItem(selectedRow) self.VerseListView.insertItem(selectedRow + 1, qw) - self.VerseListView.setCurrentRow(selectedRow + 1) + self.VerseListView.setCurrentRow(selectedRow + 1) def onClearButtonPressed(self): self.VerseTextEdit.clear() @@ -122,7 +135,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog): def onVerseListViewPressed(self, item): self.DeleteButton.setEnabled(True) self.EditButton.setEnabled(True) - + def onVerseListViewSelected(self, item): self.VerseTextEdit.setPlainText(item.text()) self.DeleteButton.setEnabled(False)