← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~googol-hush/openlp/trivial2 into lp:openlp

 

Andreas Preikschat has proposed merging lp:~googol-hush/openlp/trivial2 into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)

For more details, see:
https://code.launchpad.net/~googol-hush/openlp/trivial2/+merge/62646

Hello,

1) Improved 'Auto Select' feature
Removed the signal and made the code more generic.

2)  Fixed a traceback which occurs when you click the "Add" button in the slidecontroller when you are not previewing an item.

3) Improved parentage
The custom edit form is now created by the mediaitem and not the plugin. The songs plugin does it the same way. (Do not be confused by line 137. The self.parent is set in the MediaManagerItem constructor.)

4) clean ups
-- 
https://code.launchpad.net/~googol-hush/openlp/trivial2/+merge/62646
Your team OpenLP Core is requested to review the proposed merge of lp:~googol-hush/openlp/trivial2 into lp:openlp.
=== modified file 'openlp/core/lib/mediamanageritem.py'
--- openlp/core/lib/mediamanageritem.py	2011-05-26 17:11:22 +0000
+++ openlp/core/lib/mediamanageritem.py	2011-05-27 10:31:27 +0000
@@ -112,13 +112,10 @@
         self.requiredIcons()
         self.setupUi()
         self.retranslateUi()
-        self.autoSelectItem = None
+        self.auto_select_id = -1
         QtCore.QObject.connect(Receiver.get_receiver(),
             QtCore.SIGNAL(u'%s_service_load' % self.parent.name.lower()),
             self.serviceLoad)
-        QtCore.QObject.connect(Receiver.get_receiver(),
-            QtCore.SIGNAL(u'%s_set_autoselect_item' % self.parent.name.lower()),
-            self.setAutoSelectItem)
 
     def requiredIcons(self):
         """
@@ -479,9 +476,6 @@
                 if keepFocus:
                     self.listView.setFocus()
 
-    def setAutoSelectItem(self, itemToSelect=None):
-        self.autoSelectItem = itemToSelect
-
     def onLiveClick(self):
         """
         Send an item live by building a service item then adding that service
@@ -617,6 +611,16 @@
             item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
         return item_id
 
+    def save_auto_select_id(self):
+        """
+        Sorts out, what item to select after loading a list.
+        """
+        # The item to select has not been set.
+        if self.auto_select_id == -1:
+            item = self.listView.currentItem()
+            if item:
+                self.auto_select_id = item.data(QtCore.Qt.UserRole).toInt()[0]
+
     def search(self, string):
         """
         Performs a plugin specific search for items containing ``string``

=== modified file 'openlp/core/ui/slidecontroller.py'
--- openlp/core/ui/slidecontroller.py	2011-05-26 17:25:59 +0000
+++ openlp/core/ui/slidecontroller.py	2011-05-27 10:31:27 +0000
@@ -1044,7 +1044,8 @@
         """
         From the preview display request the Item to be added to service
         """
-        self.parent.serviceManagerContents.addServiceItem(self.serviceItem)
+        if self.serviceItem:
+            self.parent.serviceManagerContents.addServiceItem(self.serviceItem)
 
     def onGoLiveClick(self):
         """

=== modified file 'openlp/plugins/custom/customplugin.py'
--- openlp/plugins/custom/customplugin.py	2011-05-26 17:11:22 +0000
+++ openlp/plugins/custom/customplugin.py	2011-05-27 10:31:27 +0000
@@ -27,8 +27,6 @@
 
 import logging
 
-from forms import EditCustomForm
-
 from openlp.core.lib import Plugin, StringContent, build_icon, translate
 from openlp.core.lib.db import Manager
 from openlp.plugins.custom.lib import CustomMediaItem, CustomTab
@@ -52,7 +50,6 @@
             CustomMediaItem, CustomTab)
         self.weight = -5
         self.manager = Manager(u'custom', init_schema)
-        self.edit_custom_form = EditCustomForm(self)
         self.icon_path = u':/plugins/plugin_custom.png'
         self.icon = build_icon(self.icon_path)
 

=== modified file 'openlp/plugins/custom/forms/editcustomform.py'
--- openlp/plugins/custom/forms/editcustomform.py	2011-05-27 05:52:45 +0000
+++ openlp/plugins/custom/forms/editcustomform.py	2011-05-27 10:31:27 +0000
@@ -43,13 +43,13 @@
     Class documentation goes here.
     """
     log.info(u'Custom Editor loaded')
-    def __init__(self, parent):
+    def __init__(self, parent, manager):
         """
         Constructor
         """
         QtGui.QDialog.__init__(self)
         self.parent = parent
-        self.manager = self.parent.manager
+        self.manager = manager
         self.setupUi(self)
         # Create other objects and forms.
         self.editSlideForm = EditCustomSlideForm(self)
@@ -115,8 +115,6 @@
     def accept(self):
         log.debug(u'accept')
         if self.saveCustom():
-            Receiver.send_message(u'custom_set_autoselect_item',
-                self.customSlide.id)
             Receiver.send_message(u'custom_load_list')
             QtGui.QDialog.accept(self)
 
@@ -138,7 +136,9 @@
         self.customSlide.text = unicode(sxml.extract_xml(), u'utf-8')
         self.customSlide.credits = unicode(self.creditEdit.text())
         self.customSlide.theme_name = unicode(self.themeComboBox.currentText())
-        return self.manager.save_object(self.customSlide)
+        success = self.manager.save_object(self.customSlide)
+        self.parent.auto_select_id = self.customSlide.id
+        return success
 
     def onUpButtonClicked(self):
         selectedRow = self.slideListView.currentRow()

=== modified file 'openlp/plugins/custom/lib/mediaitem.py'
--- openlp/plugins/custom/lib/mediaitem.py	2011-05-27 05:52:45 +0000
+++ openlp/plugins/custom/lib/mediaitem.py	2011-05-27 10:31:27 +0000
@@ -35,6 +35,7 @@
     check_item_selected, translate
 from openlp.core.lib.searchedit import SearchEdit
 from openlp.core.lib.ui import UiStrings
+from openlp.plugins.custom.forms import EditCustomForm
 from openlp.plugins.custom.lib import CustomXMLParser
 from openlp.plugins.custom.lib.db import CustomSlide
 
@@ -57,6 +58,7 @@
     def __init__(self, parent, plugin, icon):
         self.IconPath = u'custom/custom'
         MediaManagerItem.__init__(self, parent, self, icon)
+        self.edit_custom_form = EditCustomForm(self, self.parent.manager)
         self.singleServiceItem = False
         self.quickPreviewAllowed = True
         self.hasSearch = True
@@ -136,6 +138,8 @@
         self.onRemoteEditClear()
 
     def loadList(self, custom_slides):
+        # Sort out what custom we want to select after loading the list.
+        self.save_auto_select_id()
         self.listView.clear()
         # Sort the customs by its title considering language specific
         # characters. lower() is needed for windows!
@@ -146,33 +150,34 @@
             custom_name.setData(
                 QtCore.Qt.UserRole, QtCore.QVariant(custom_slide.id))
             self.listView.addItem(custom_name)
-            # Auto-select the item if name has been set
-            if custom_slide.id == self.autoSelectItem:
+            # Auto-select the custom.
+            if custom_slide.id == self.auto_select_id:
                 self.listView.setCurrentItem(custom_name)
+        self.auto_select_id = -1
 
     def onNewClick(self):
-        self.parent.edit_custom_form.loadCustom(0)
-        self.parent.edit_custom_form.exec_()
+        self.edit_custom_form.loadCustom(0)
+        self.edit_custom_form.exec_()
         self.initialise()
 
     def onRemoteEditClear(self):
         self.remoteTriggered = None
         self.remoteCustom = -1
 
-    def onRemoteEdit(self, customid):
+    def onRemoteEdit(self, message):
         """
         Called by ServiceManager or SlideController by event passing
-        the Song Id in the payload along with an indicator to say which
+        the custom Id in the payload along with an indicator to say which
         type of display is required.
         """
-        fields = customid.split(u':')
-        valid = self.manager.get_object(CustomSlide, fields[1])
+        remote_type, custom_id = message.split(u':')
+        custom_id = int(custom_id)
+        valid = self.manager.get_object(CustomSlide, custom_id)
         if valid:
-            self.remoteCustom = fields[1]
-            self.remoteTriggered = fields[0]
-            self.parent.edit_custom_form.loadCustom(fields[1],
-                (fields[0] == u'P'))
-            self.parent.edit_custom_form.exec_()
+            self.remoteCustom = custom_id
+            self.remoteTriggered = remote_type
+            self.edit_custom_form.loadCustom(custom_id, (remote_type == u'P'))
+            self.edit_custom_form.exec_()
 
     def onEditClick(self):
         """
@@ -181,8 +186,8 @@
         if check_item_selected(self.listView, UiStrings().SelectEdit):
             item = self.listView.currentItem()
             item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
-            self.parent.edit_custom_form.loadCustom(item_id, False)
-            self.parent.edit_custom_form.exec_()
+            self.edit_custom_form.loadCustom(item_id, False)
+            self.edit_custom_form.exec_()
             self.initialise()
 
     def onDeleteClick(self):
@@ -203,7 +208,6 @@
         self.searchTextEdit.setFocus()
 
     def generateSlideData(self, service_item, item=None, xmlVersion=False):
-        raw_slides = []
         raw_footer = []
         slide = None
         theme = None
@@ -221,8 +225,7 @@
             service_item.theme = theme
         customXML = CustomXMLParser(customSlide.text)
         verseList = customXML.get_verses()
-        for verse in verseList:
-            raw_slides.append(verse[1])
+        raw_slides = [verse[1] for verse in verseList]
         service_item.title = title
         for slide in raw_slides:
             service_item.add_from_text(slide[:30], slide)
@@ -260,7 +263,7 @@
     def onSearchTextEditChanged(self, text):
         """
         If search as type enabled invoke the search on each key press.
-        If the Title is being searched do not start till 2 characters
+        If the Title is being searched do not start until 2 characters
         have been entered.
         """
         search_length = 2
@@ -283,8 +286,5 @@
             func.lower(CustomSlide.text).like(u'%' +
             string.lower() + u'%')),
             order_by_ref=CustomSlide.title)
-        results = []
-        for custom in search_results:
-            results.append([custom.id, custom.title])
-        return results
+        return [[custom.id, custom.title] for custom in search_results]
 

=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py	2011-05-27 05:52:45 +0000
+++ openlp/plugins/songs/forms/editsongform.py	2011-05-27 10:31:27 +0000
@@ -696,7 +696,6 @@
         self.clearCaches()
         if self._validate_song():
             self.saveSong()
-            Receiver.send_message(u'songs_set_autoselect_item',self.song.id)
             Receiver.send_message(u'songs_load_list')
             self.song = None
             QtGui.QDialog.accept(self)
@@ -756,6 +755,7 @@
             self.song.topics.append(self.manager.get_object(Topic, topicId))
         clean_song(self.manager, self.song)
         self.manager.save_object(self.song)
+        self.parent.auto_select_id = self.song.id
 
     def _processLyrics(self):
         """

=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
--- openlp/plugins/songs/lib/mediaitem.py	2011-05-27 05:52:45 +0000
+++ openlp/plugins/songs/lib/mediaitem.py	2011-05-27 10:31:27 +0000
@@ -232,6 +232,7 @@
 
     def displayResultsSong(self, searchresults):
         log.debug(u'display results Song')
+        self.save_auto_select_id()
         self.listView.clear()
         # Sort the songs by its title considering language specific characters.
         # lower() is needed for windows!
@@ -245,8 +246,9 @@
             song_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(song.id))
             self.listView.addItem(song_name)
             # Auto-select the item if name has been set
-            if song.id == self.autoSelectItem :
+            if song.id == self.auto_select_id:
                 self.listView.setCurrentItem(song_name)
+        self.auto_select_id = -1
 
     def displayResultsAuthor(self, searchresults):
         log.debug(u'display results Author')
@@ -487,7 +489,4 @@
         Search for some songs
         """
         search_results = self.searchEntire(string)
-        results = []
-        for song in search_results:
-            results.append([song.id, song.title])
-        return results
+        return [[song.id, song.title] for song in search_results]


Follow ups