← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/ThemeManager2 into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/ThemeManager2 into lp:openlp.

Requested reviews:
    openlp.org Core (openlp-core)

Fix issues from last merge
Add Theme handling to Custom plugin 
-- 
https://code.launchpad.net/~trb143/openlp/ThemeManager2/+merge/5302
Your team openlp.org Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/__init__.py'
--- openlp/core/__init__.py	2009-04-06 18:45:45 +0000
+++ openlp/core/__init__.py	2009-04-07 19:03:36 +0000
@@ -29,8 +29,5 @@
     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()
 

=== modified file 'openlp/core/lib/__init__.py'
--- openlp/core/lib/__init__.py	2009-03-28 20:12:22 +0000
+++ openlp/core/lib/__init__.py	2009-04-07 19:45:21 +0000
@@ -31,9 +31,8 @@
 from toolbar import OpenLPToolbar
 from songxmlhandler import SongXMLBuilder
 from songxmlhandler import SongXMLParser
-from themexmlhandler import ThemeXMLBuilder
-from themexmlhandler import ThemeXMLParser
+from themexmlhandler import ThemeXML
 
 __all__ = ['PluginConfig', 'Plugin', 'SettingsTab', 'MediaManagerItem', 'Event', 'EventType'
            'XmlRootClass', 'ServiceItem', 'Receiver', 'OpenLPToolbar', 'SongXMLBuilder',
-           'SongXMLParser', 'EventManager', 'ThemeXMLBuilder', 'ThemeXMLParser']
+           'SongXMLParser', 'EventManager', 'ThemeXML']

=== modified file 'openlp/core/lib/themexmlhandler.py'
--- openlp/core/lib/themexmlhandler.py	2009-04-06 18:45:45 +0000
+++ openlp/core/lib/themexmlhandler.py	2009-04-07 19:45:21 +0000
@@ -24,7 +24,7 @@
 from xml.dom.minidom import  Document
 from xml.etree.ElementTree import ElementTree, XML, dump
 
-class ThemeXMLBuilder():
+class ThemeXML():
     def __init__(self):
         # Create the minidom document
         self.theme_xml = Document()
@@ -154,8 +154,7 @@
         # Print our newly created XML
         return self.theme_xml.toxml()
 
-class ThemeXMLParser():
-    def __init__(self, xml):
+    def parse(self, xml):
         theme_xml = ElementTree(element=XML(xml))
         iter=theme_xml.getiterator()
         master = u''

=== modified file 'openlp/core/ui/thememanager.py'
--- openlp/core/ui/thememanager.py	2009-04-06 18:45:45 +0000
+++ openlp/core/ui/thememanager.py	2009-04-07 19:45:21 +0000
@@ -37,8 +37,7 @@
 from openlp.core.lib import EventType
 from openlp.core.lib import EventManager
 from openlp.core.lib import OpenLPToolbar
-from openlp.core.lib import ThemeXMLBuilder
-from openlp.core.lib import ThemeXMLParser
+from openlp.core.lib import ThemeXML
 from openlp.core.utils import ConfigHelper
 
 
@@ -52,6 +51,7 @@
     """
     global log
     log=logging.getLogger(u'ThemeData')
+
     def __init__(self):
         QAbstractItemModel.__init__(self)
         self.items=[]
@@ -132,9 +132,13 @@
         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 +182,7 @@
         self.eventManager = eventManager
 
     def onAddTheme(self):
+        self.amendThemeForm.loadTheme(None)
         self.amendThemeForm.exec_()
 
     def onEditTheme(self):
@@ -213,7 +218,7 @@
         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 +237,7 @@
                 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 +245,7 @@
                         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))
@@ -259,7 +264,7 @@
         log.debug(u'migrateVersion122 %s %s', filename , fullpath)
         t=Theme(xml_data)
 
-        newtheme = ThemeXMLBuilder()
+        newtheme = ThemeXML()
         newtheme.new_document(t.Name)
         if t.BackgroundType == 0:
             newtheme.add_background_solid(str(t.BackgroundParameter1.name()))
@@ -285,7 +290,8 @@
 
     def generateImage(self, dir, name, theme_xml):
         log.debug(u'generateImage %s %s ', dir, theme_xml)
-        theme = ThemeXMLParser(theme_xml)
+        theme = ThemeXML()
+        theme.parse(theme_xml)
         #print theme
         size=QtCore.QSize(800,600)
         frame=TstFrame(size)

=== modified file 'openlp/plugins/custom/customplugin.py'
--- openlp/plugins/custom/customplugin.py	2009-03-25 20:30:48 +0000
+++ openlp/plugins/custom/customplugin.py	2009-04-07 19:03:36 +0000
@@ -23,15 +23,17 @@
 
 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 @@
         # 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())

=== modified file 'openlp/plugins/custom/forms/editcustomform.py'
--- openlp/plugins/custom/forms/editcustomform.py	2009-03-25 20:30:48 +0000
+++ openlp/plugins/custom/forms/editcustomform.py	2009-04-07 19:03:36 +0000
@@ -32,7 +32,7 @@
         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 @@
         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 @@
         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 @@
             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 @@
             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 @@
         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 @@
     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)


Follow ups