forked from openlp/openlp
Head r1300
This commit is contained in:
commit
8059ac5181
@ -30,7 +30,6 @@ type and capability of an item.
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
import mutagen
|
||||
import os
|
||||
import uuid
|
||||
|
||||
@ -110,6 +109,7 @@ class ServiceItem(object):
|
||||
self.edit_id = None
|
||||
self.xml_version = None
|
||||
self.start_time = 0
|
||||
self.media_length = 0
|
||||
self._new_item()
|
||||
|
||||
def _new_item(self):
|
||||
@ -263,7 +263,8 @@ class ServiceItem(object):
|
||||
u'search': self.search_string,
|
||||
u'data': self.data_string,
|
||||
u'xml_version': self.xml_version,
|
||||
u'start_time': self.start_time
|
||||
u'start_time': self.start_time,
|
||||
u'media_length': self.media_length
|
||||
}
|
||||
service_data = []
|
||||
if self.service_item_type == ServiceItemType.Text:
|
||||
@ -309,6 +310,8 @@ class ServiceItem(object):
|
||||
self.xml_version = header[u'xml_version']
|
||||
if u'start_time' in header:
|
||||
self.start_time = header[u'start_time']
|
||||
if u'media_length' in header:
|
||||
self.media_length = header[u'media_length']
|
||||
if self.service_item_type == ServiceItemType.Text:
|
||||
for slide in serviceitem[u'serviceitem'][u'data']:
|
||||
self._raw_frames.append(slide)
|
||||
@ -438,14 +441,9 @@ class ServiceItem(object):
|
||||
if self.start_time != 0:
|
||||
start = UiStrings.StartTimeCode % \
|
||||
unicode(datetime.timedelta(seconds=self.start_time))
|
||||
path = os.path.join(self.get_frames()[0][u'path'],
|
||||
self.get_frames()[0][u'title'])
|
||||
if os.path.isfile(path):
|
||||
file = mutagen.File(path)
|
||||
if file is not None:
|
||||
seconds = int(file.info.length)
|
||||
end = UiStrings.LengthTime % \
|
||||
unicode(datetime.timedelta(seconds=seconds))
|
||||
if self.media_length != 0:
|
||||
end = UiStrings.LengthTime % \
|
||||
unicode(datetime.timedelta(seconds=self.media_length))
|
||||
if not start and not end:
|
||||
return None
|
||||
elif start and not end:
|
||||
|
@ -348,7 +348,7 @@ class MainDisplay(DisplayWidget):
|
||||
"""
|
||||
Start the video at a predetermined point.
|
||||
"""
|
||||
if newState == 2:
|
||||
if newState == Phonon.PlayingState:
|
||||
self.mediaObject.seek(self.serviceItem.start_time * 1000)
|
||||
|
||||
def isWebLoaded(self):
|
||||
|
@ -24,7 +24,6 @@
|
||||
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
|
||||
###############################################################################
|
||||
import datetime
|
||||
import mutagen
|
||||
import os
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
@ -113,16 +112,9 @@ class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog):
|
||||
item.notes.replace(u'\n', u'<br />'))
|
||||
# Add play length of media files.
|
||||
if item.is_media() and self.printMetaDataCheckBox.isChecked():
|
||||
path = os.path.join(item.get_frames()[0][u'path'],
|
||||
item.get_frames()[0][u'title'])
|
||||
if not os.path.isfile(path):
|
||||
continue
|
||||
file = mutagen.File(path)
|
||||
if file is not None:
|
||||
length = int(file.info.length)
|
||||
text += u'<p><b>%s</b> %s</p>' % (translate(
|
||||
'OpenLP.ServiceManager', u'Playing time:'),
|
||||
unicode(datetime.timedelta(seconds=length)))
|
||||
text += u'<p><b>%s</b> %s</p>' % (translate(
|
||||
'OpenLP.ServiceManager', u'Playing time:'),
|
||||
unicode(datetime.timedelta(seconds=item.media_length)))
|
||||
if self.customNoteEdit.toPlainText():
|
||||
text += u'<h4>%s</h4>%s' % (translate('OpenLP.ServiceManager',
|
||||
u'Custom Service Notes:'), self.customNoteEdit.toPlainText())
|
||||
|
@ -30,6 +30,7 @@ from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import MediaManagerItem, Receiver, ItemCapabilities, \
|
||||
translate
|
||||
from openlp.core.lib.searchedit import SearchEdit
|
||||
from openlp.core.lib.ui import UiStrings, add_widget_completer, \
|
||||
media_item_combo_box, critical_error_message_box
|
||||
from openlp.plugins.bibles.forms import BibleImportForm
|
||||
@ -37,6 +38,14 @@ from openlp.plugins.bibles.lib import get_reference_match
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
class BibleSearch(object):
|
||||
"""
|
||||
Enumeration class for the different search methods for the "quick search".
|
||||
"""
|
||||
Reference = 1
|
||||
Text = 2
|
||||
|
||||
|
||||
class BibleMediaItem(MediaManagerItem):
|
||||
"""
|
||||
This is the custom media manager item for Bibles.
|
||||
@ -83,18 +92,17 @@ class BibleMediaItem(MediaManagerItem):
|
||||
u'quickSecondComboBox')
|
||||
self.quickSecondLabel.setBuddy(self.quickSecondComboBox)
|
||||
self.quickLayout.addRow(self.quickSecondLabel, self.quickSecondComboBox)
|
||||
self.quickSearchTypeLabel = QtGui.QLabel(self.quickTab)
|
||||
self.quickSearchTypeLabel.setObjectName(u'quickSearchTypeLabel')
|
||||
self.quickSearchComboBox = media_item_combo_box(self.quickTab,
|
||||
u'quickSearchComboBox')
|
||||
self.quickSearchTypeLabel.setBuddy(self.quickSearchComboBox)
|
||||
self.quickLayout.addRow(self.quickSearchTypeLabel,
|
||||
self.quickSearchComboBox)
|
||||
self.quickSearchLabel = QtGui.QLabel(self.quickTab)
|
||||
self.quickSearchLabel.setObjectName(u'quickSearchLabel')
|
||||
self.quickSearchEdit = QtGui.QLineEdit(self.quickTab)
|
||||
self.quickSearchEdit = SearchEdit(self.quickTab)
|
||||
self.quickSearchEdit.setObjectName(u'quickSearchEdit')
|
||||
self.quickSearchLabel.setBuddy(self.quickSearchEdit)
|
||||
self.quickSearchEdit.setSearchTypes([
|
||||
(BibleSearch.Reference, u':/bibles/bibles_search_reference.png',
|
||||
translate('BiblesPlugin.MediaItem', 'Scripture Reference')),
|
||||
(BibleSearch.Text, u':/bibles/bibles_search_text.png',
|
||||
translate('BiblesPlugin.MediaItem', 'Text Search'))
|
||||
])
|
||||
self.quickLayout.addRow(self.quickSearchLabel, self.quickSearchEdit)
|
||||
self.quickClearLabel = QtGui.QLabel(self.quickTab)
|
||||
self.quickClearLabel.setObjectName(u'quickClearLabel')
|
||||
@ -196,8 +204,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedFromVerse)
|
||||
QtCore.QObject.connect(self.advancedToChapter,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.onAdvancedToChapter)
|
||||
QtCore.QObject.connect(self.quickSearchComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
|
||||
QtCore.QObject.connect(self.quickSearchEdit,
|
||||
QtCore.SIGNAL(u'searchTypeChanged(int)'), self.updateAutoCompleter)
|
||||
QtCore.QObject.connect(self.quickVersionComboBox,
|
||||
QtCore.SIGNAL(u'activated(int)'), self.updateAutoCompleter)
|
||||
# Buttons
|
||||
@ -230,8 +238,6 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.quickVersionLabel.setText(u'%s:' % UiStrings.Version)
|
||||
self.quickSecondLabel.setText(
|
||||
translate('BiblesPlugin.MediaItem', 'Second:'))
|
||||
self.quickSearchTypeLabel.setText(
|
||||
translate('BiblesPlugin.MediaItem', 'Search type:'))
|
||||
self.quickSearchLabel.setText(
|
||||
translate('BiblesPlugin.MediaItem', 'Find:'))
|
||||
self.quickSearchButton.setText(UiStrings.Search)
|
||||
@ -253,10 +259,6 @@ class BibleMediaItem(MediaManagerItem):
|
||||
self.advancedClearLabel.setText(
|
||||
translate('BiblesPlugin.MediaItem', 'Results:'))
|
||||
self.advancedSearchButton.setText(UiStrings.Search)
|
||||
self.quickSearchComboBox.addItem(
|
||||
translate('BiblesPlugin.MediaItem', 'Verse Search'))
|
||||
self.quickSearchComboBox.addItem(
|
||||
translate('BiblesPlugin.MediaItem', 'Text Search'))
|
||||
self.quickClearComboBox.addItem(
|
||||
translate('BiblesPlugin.MediaItem', 'Clear'))
|
||||
self.quickClearComboBox.addItem(
|
||||
@ -354,11 +356,11 @@ class BibleMediaItem(MediaManagerItem):
|
||||
"""
|
||||
This updates the bible book completion list for the search field. The
|
||||
completion depends on the bible. It is only updated when we are doing a
|
||||
verse search, otherwise the auto completion list is removed.
|
||||
reference search, otherwise the auto completion list is removed.
|
||||
"""
|
||||
books = []
|
||||
# We have to do a 'Verse Search'.
|
||||
if self.quickSearchComboBox.currentIndex() == 0:
|
||||
# We have to do a 'Reference Search'.
|
||||
if self.quickSearchEdit.currentSearchType() == BibleSearch.Reference:
|
||||
bibles = self.parent.manager.get_bibles()
|
||||
bible = unicode(self.quickVersionComboBox.currentText())
|
||||
if bible:
|
||||
@ -487,7 +489,7 @@ class BibleMediaItem(MediaManagerItem):
|
||||
def onQuickSearchButton(self):
|
||||
"""
|
||||
Does a quick search and saves the search results. Quick search can
|
||||
either be "Verse Search" or "Text Search".
|
||||
either be "Reference Search" or "Text Search".
|
||||
"""
|
||||
log.debug(u'Quick Search Button pressed')
|
||||
self.quickSearchButton.setEnabled(False)
|
||||
@ -495,8 +497,8 @@ class BibleMediaItem(MediaManagerItem):
|
||||
bible = unicode(self.quickVersionComboBox.currentText())
|
||||
second_bible = unicode(self.quickSecondComboBox.currentText())
|
||||
text = unicode(self.quickSearchEdit.text())
|
||||
if self.quickSearchComboBox.currentIndex() == 0:
|
||||
# We are doing a 'Verse Search'.
|
||||
if self.quickSearchEdit.currentSearchType() == BibleSearch.Reference:
|
||||
# We are doing a 'Reference Search'.
|
||||
self.search_results = self.parent.manager.get_verses(bible, text)
|
||||
if second_bible and self.search_results:
|
||||
self.second_search_results = self.parent.manager.get_verses(
|
||||
|
@ -32,6 +32,7 @@ from PyQt4 import QtCore, QtGui
|
||||
from openlp.core.lib import MediaManagerItem, build_icon, ItemCapabilities, \
|
||||
SettingsManager, translate, check_item_selected, Receiver
|
||||
from openlp.core.lib.ui import UiStrings, critical_error_message_box
|
||||
from PyQt4.phonon import Phonon
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
@ -48,9 +49,13 @@ class MediaMediaItem(MediaManagerItem):
|
||||
u':/media/media_video.png').toImage()
|
||||
MediaManagerItem.__init__(self, parent, self, icon)
|
||||
self.singleServiceItem = False
|
||||
self.mediaObject = Phonon.MediaObject(self)
|
||||
QtCore.QObject.connect(Receiver.get_receiver(),
|
||||
QtCore.SIGNAL(u'video_background_replaced'),
|
||||
self.videobackgroundReplaced)
|
||||
QtCore.QObject.connect(self.mediaObject,
|
||||
QtCore.SIGNAL(u'stateChanged(Phonon::State, Phonon::State)'),
|
||||
self.videoStart)
|
||||
|
||||
def retranslateUi(self):
|
||||
self.OnNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media')
|
||||
@ -118,6 +123,11 @@ class MediaMediaItem(MediaManagerItem):
|
||||
return False
|
||||
filename = unicode(item.data(QtCore.Qt.UserRole).toString())
|
||||
if os.path.exists(filename):
|
||||
self.MediaState = None
|
||||
self.mediaObject.stop()
|
||||
self.mediaObject.clearQueue()
|
||||
self.mediaObject.setCurrentSource(Phonon.MediaSource(filename))
|
||||
self.mediaObject.play()
|
||||
service_item.title = unicode(self.plugin.nameStrings[u'singular'])
|
||||
service_item.add_capability(ItemCapabilities.RequiresMedia)
|
||||
service_item.add_capability(ItemCapabilities.AllowsVarableStartTime)
|
||||
@ -125,6 +135,9 @@ class MediaMediaItem(MediaManagerItem):
|
||||
service_item.theme = -1
|
||||
frame = u':/media/image_clapperboard.png'
|
||||
(path, name) = os.path.split(filename)
|
||||
while not self.MediaState:
|
||||
Receiver.send_message(u'openlp_process_events')
|
||||
service_item.media_length = self.mediaLength
|
||||
service_item.add_from_command(path, name, frame)
|
||||
return True
|
||||
else:
|
||||
@ -162,3 +175,12 @@ class MediaMediaItem(MediaManagerItem):
|
||||
item_name.setIcon(build_icon(img))
|
||||
item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file))
|
||||
self.listView.addItem(item_name)
|
||||
|
||||
def videoStart(self, newState, oldState):
|
||||
"""
|
||||
Start the video at a predetermined point.
|
||||
"""
|
||||
if newState == Phonon.PlayingState:
|
||||
self.MediaState = newState
|
||||
self.mediaLength = self.mediaObject.totalTime()/1000
|
||||
self.mediaObject.stop()
|
||||
|
BIN
resources/images/bibles_search_reference.png
Normal file
BIN
resources/images/bibles_search_reference.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.0 KiB |
BIN
resources/images/bibles_search_text.png
Normal file
BIN
resources/images/bibles_search_text.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 335 B |
@ -21,6 +21,10 @@
|
||||
<file>song_topic_edit.png</file>
|
||||
<file>song_book_edit.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="bibles">
|
||||
<file>bibles_search_text.png</file>
|
||||
<file>bibles_search_reference.png</file>
|
||||
</qresource>
|
||||
<qresource prefix="plugins">
|
||||
<file>plugin_alerts.png</file>
|
||||
<file>plugin_bibles.png</file>
|
||||
|
Loading…
Reference in New Issue
Block a user