openlp-core team mailing list archive
-
openlp-core team
-
Mailing list archive
-
Message #09326
[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