forked from openlp/openlp
head
This commit is contained in:
commit
500ce5f720
@ -32,7 +32,7 @@ import os
|
||||
|
||||
from PyQt4 import QtCore
|
||||
from sqlalchemy import create_engine, MetaData
|
||||
from sqlalchemy.exceptions import InvalidRequestError
|
||||
from sqlalchemy.exc import InvalidRequestError
|
||||
from sqlalchemy.orm import scoped_session, sessionmaker
|
||||
|
||||
from openlp.core.utils import AppLocation, delete_file
|
||||
|
@ -111,13 +111,10 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
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.plugin.name.lower()),
|
||||
self.serviceLoad)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'%s_set_autoselect_item' % self.plugin.name.lower()),
|
||||
self.setAutoSelectItem)
|
||||
|
||||
def requiredIcons(self):
|
||||
"""
|
||||
@ -478,9 +475,6 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
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
|
||||
@ -616,6 +610,16 @@ class MediaManagerItem(QtGui.QWidget):
|
||||
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``
|
||||
|
@ -841,6 +841,11 @@ class SlideController(QtGui.QWidget):
|
||||
Receiver.send_message(u'%s_unblank'
|
||||
% self.serviceItem.name.lower(),
|
||||
[self.serviceItem, self.isLive])
|
||||
else:
|
||||
if hide_mode:
|
||||
Receiver.send_message(u'maindisplay_hide', hide_mode)
|
||||
else:
|
||||
Receiver.send_message(u'maindisplay_show')
|
||||
|
||||
def hidePlugin(self, hide):
|
||||
"""
|
||||
@ -859,6 +864,11 @@ class SlideController(QtGui.QWidget):
|
||||
Receiver.send_message(u'%s_unblank'
|
||||
% self.serviceItem.name.lower(),
|
||||
[self.serviceItem, self.isLive])
|
||||
else:
|
||||
if hide:
|
||||
Receiver.send_message(u'maindisplay_hide', HideMode.Screen)
|
||||
else:
|
||||
Receiver.send_message(u'maindisplay_show')
|
||||
|
||||
def onSlideSelected(self, start=False):
|
||||
"""
|
||||
@ -1044,7 +1054,8 @@ class SlideController(QtGui.QWidget):
|
||||
"""
|
||||
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):
|
||||
"""
|
||||
|
@ -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 @@ class CustomPlugin(Plugin):
|
||||
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)
|
||||
|
||||
|
@ -43,13 +43,13 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
||||
Class documentation goes here.
|
||||
"""
|
||||
log.info(u'Custom Editor loaded')
|
||||
def __init__(self, plugin):
|
||||
def __init__(self, plugin, manager):
|
||||
"""
|
||||
Constructor
|
||||
"""
|
||||
self.plugin = plugin
|
||||
QtGui.QDialog.__init__(self, self.plugin.formparent)
|
||||
self.manager = self.plugin.manager
|
||||
self.manager = manager
|
||||
self.setupUi(self)
|
||||
# Create other objects and forms.
|
||||
self.editSlideForm = EditCustomSlideForm(self)
|
||||
@ -115,8 +115,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
||||
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 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog):
|
||||
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()
|
||||
|
@ -35,6 +35,7 @@ from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
||||
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 @@ class CustomMediaItem(MediaManagerItem):
|
||||
def __init__(self, parent, plugin, icon):
|
||||
self.IconPath = u'custom/custom'
|
||||
MediaManagerItem.__init__(self, parent, plugin, icon)
|
||||
self.edit_custom_form = EditCustomForm(self, self.plugin.manager)
|
||||
self.singleServiceItem = False
|
||||
self.quickPreviewAllowed = True
|
||||
self.hasSearch = True
|
||||
@ -136,6 +138,8 @@ class CustomMediaItem(MediaManagerItem):
|
||||
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 @@ class CustomMediaItem(MediaManagerItem):
|
||||
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.plugin.edit_custom_form.loadCustom(0)
|
||||
self.plugin.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.plugin.edit_custom_form.loadCustom(fields[1],
|
||||
(fields[0] == u'P'))
|
||||
self.plugin.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 @@ class CustomMediaItem(MediaManagerItem):
|
||||
if check_item_selected(self.listView, UiStrings().SelectEdit):
|
||||
item = self.listView.currentItem()
|
||||
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
|
||||
self.plugin.edit_custom_form.loadCustom(item_id, False)
|
||||
self.plugin.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 @@ class CustomMediaItem(MediaManagerItem):
|
||||
self.searchTextEdit.setFocus()
|
||||
|
||||
def generateSlideData(self, service_item, item=None, xmlVersion=False):
|
||||
raw_slides = []
|
||||
raw_footer = []
|
||||
slide = None
|
||||
theme = None
|
||||
@ -221,8 +225,7 @@ class CustomMediaItem(MediaManagerItem):
|
||||
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 @@ class CustomMediaItem(MediaManagerItem):
|
||||
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 @@ class CustomMediaItem(MediaManagerItem):
|
||||
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]
|
||||
|
||||
|
@ -695,7 +695,6 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
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)
|
||||
@ -755,6 +754,7 @@ class EditSongForm(QtGui.QDialog, Ui_EditSongDialog):
|
||||
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):
|
||||
"""
|
||||
|
@ -232,6 +232,7 @@ class SongMediaItem(MediaManagerItem):
|
||||
|
||||
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 @@ class SongMediaItem(MediaManagerItem):
|
||||
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 @@ class SongMediaItem(MediaManagerItem):
|
||||
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]
|
||||
|
Loading…
Reference in New Issue
Block a user