Fix Problems from last merge review

Get Custom Plugin theme combo working following event post from ThemeManager
This commit is contained in:
Tim Bentley 2009-04-07 20:03:36 +01:00
parent 0e7dfb9fc4
commit 0dfe60ef9f
4 changed files with 44 additions and 23 deletions

View File

@ -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()

View File

@ -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))

View File

@ -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())

View File

@ -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)