diff --git a/openlp/core/lib/htmlbuilder.py b/openlp/core/lib/htmlbuilder.py
index 06eedb762..9608a5219 100644
--- a/openlp/core/lib/htmlbuilder.py
+++ b/openlp/core/lib/htmlbuilder.py
@@ -36,6 +36,7 @@ log = logging.getLogger(__name__)
# FIXME: Add html5 doctype. However, do not break theme gradients.
HTMLSRC = u"""
+
OpenLP Display
@@ -276,25 +277,25 @@ def build_html(item, screen, alert, islive, background, plugins=None, \
image_src = u'src="data:image/png;base64,%s"' % image
else:
image_src = u'style="display:none;"'
- plugin_css = u''
- plugin_js = u''
- plugin_html = u''
+ css_additions = u''
+ js_additions = u''
+ html_additions = u''
if plugins:
for plugin in plugins:
- plugin_css += plugin.getDisplayCss()
- plugin_js += plugin.getDisplayJavascript()
- plugin_html += plugin.getDisplayHtml()
+ css_additions += plugin.getDisplayCss()
+ js_additions += plugin.getDisplayJavascript()
+ html_additions += plugin.getDisplayHtml()
html = HTMLSRC % (build_background_css(item, width, height),
width, height,
- plugin_css,
+ css_additions,
build_alert_css(alert, width),
build_footer_css(item, height),
build_lyrics_css(item, webkitvers),
u'true' if theme and theme.display_slide_transition and islive \
else u'false',
- plugin_js,
+ js_additions,
bgimage_src, image_src,
- plugin_html,
+ html_additions,
build_lyrics_html(item, webkitvers))
return html
diff --git a/openlp/core/ui/maindisplay.py b/openlp/core/ui/maindisplay.py
index f027e8db9..3c369593a 100644
--- a/openlp/core/ui/maindisplay.py
+++ b/openlp/core/ui/maindisplay.py
@@ -67,6 +67,7 @@ class Display(QtGui.QGraphicsView):
self.width(), self.height())
self.webView.settings().setAttribute(
QtWebKit.QWebSettings.PluginsEnabled, True)
+ self.webView.settings().setAttribute(7, True)
self.page = self.webView.page()
self.frame = self.page.mainFrame()
self.frame.setScrollBarPolicy(QtCore.Qt.Vertical,
@@ -129,6 +130,7 @@ class MainDisplay(Display):
self.screen[u'size'].width(), self.screen[u'size'].height())
self.webView.settings().setAttribute( \
QtWebKit.QWebSettings.PluginsEnabled, True)
+ self.webView.settings().setAttribute(7, True)
self.page = self.webView.page()
self.frame = self.page.mainFrame()
QtCore.QObject.connect(self.webView,
@@ -253,7 +255,7 @@ class MainDisplay(Display):
"""
log.debug(u'image to display')
image = self.imageManager.get_image_bytes(name)
- self.resetVideo()
+ self.controller.mediaManager.video_reset(self.controller)
self.displayImage(image)
return self.preview()
diff --git a/openlp/core/ui/media/__init__.py b/openlp/core/ui/media/__init__.py
index 12830524d..edd1ad5f6 100644
--- a/openlp/core/ui/media/__init__.py
+++ b/openlp/core/ui/media/__init__.py
@@ -39,10 +39,12 @@ class MediaState(object):
class MediaType(object):
"""
"""
- Audio = 0
- Video = 1
+ Unused = 0
+ Audio = 1
+ Video = 2
Cd = 3
Dvd = 4
+ Folder = 5
class MediaInfo(object):
"""
@@ -50,7 +52,7 @@ class MediaInfo(object):
"""
file_info = None
volume = 100
- isFlash = False
+ is_flash = False
is_background = False
length = 0
start_time = 0
diff --git a/openlp/core/ui/media/mediaapi.py b/openlp/core/ui/media/mediaapi.py
index d6a9bab9b..58ecd49d0 100644
--- a/openlp/core/ui/media/mediaapi.py
+++ b/openlp/core/ui/media/mediaapi.py
@@ -49,7 +49,6 @@ class MediaAPI(object):
"""
return False
-
def setup(self, display):
"""
Create the related widgets for the current display
@@ -118,21 +117,19 @@ class MediaAPI(object):
"""
pass
- def getDisplayCss(self):
+ def get_media_display_css(self):
"""
Add css style sheets to htmlbuilder
"""
return u''
-
- def getDisplayJavascript(self):
+ def get_media_display_javascript(self):
"""
Add javascript functions to htmlbuilder
"""
return u''
-
- def getDisplayHtml(self):
+ def get_media_display_html(self):
"""
Add html code to htmlbuilder
"""
diff --git a/openlp/core/ui/media/mediamanager.py b/openlp/core/ui/media/mediamanager.py
index 60d99c80c..a43339c29 100644
--- a/openlp/core/ui/media/mediamanager.py
+++ b/openlp/core/ui/media/mediamanager.py
@@ -32,7 +32,7 @@ from PyQt4 import QtCore, QtGui, QtWebKit
from openlp.core.lib import OpenLPToolbar, Receiver, translate
from openlp.core.lib.ui import UiStrings, critical_error_message_box
-from openlp.core.ui.media import MediaAPI, MediaState, MediaInfo
+from openlp.core.ui.media import MediaAPI, MediaState, MediaInfo, MediaType
from openlp.core.utils import AppLocation
log = logging.getLogger(__name__)
@@ -61,12 +61,12 @@ class MediaManager(object):
self.APIs = {}
self.controller = []
self.curDisplayMediaAPI = {}
- #Timer for video state
+ # Timer for video state
self.Timer = QtCore.QTimer()
self.Timer.setInterval(200)
self.withLivePreview = False
- self.checkPreConditions()
- #Signals
+ self.check_available_media_apis()
+ # Signals
QtCore.QObject.connect(self.Timer,
QtCore.SIGNAL("timeout()"), self.video_state)
QtCore.QObject.connect(Receiver.get_receiver(),
@@ -86,7 +86,7 @@ class MediaManager(object):
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'media_unblank'), self.video_unblank)
- def registerControllers(self, controller):
+ def register_controllers(self, controller):
"""
Register each media API controller (Webkit, Phonon, etc) and
store for later use
@@ -94,12 +94,12 @@ class MediaManager(object):
if controller.check_available():
self.APIs[controller.name] = controller
- def checkPreConditions(self):
+ def check_available_media_apis(self):
"""
Check to see if we have any media API's available
If Not do not install the plugin.
"""
- log.debug(u'checkPreConditions')
+ log.debug(u'check_available_media_apis')
controller_dir = os.path.join(
AppLocation.get_directory(AppLocation.AppDir),
u'core', u'ui', u'media')
@@ -119,7 +119,7 @@ class MediaManager(object):
controller_classes = MediaAPI.__subclasses__()
for controller_class in controller_classes:
controller = controller_class(self)
- self.registerControllers(controller)
+ self.register_controllers(controller)
if self.APIs:
return True
else:
@@ -143,34 +143,34 @@ class MediaManager(object):
if not isAnyonePlaying:
self.Timer.stop()
- def getDisplayCss(self):
+ def get_media_display_css(self):
"""
Add css style sheets to htmlbuilder
"""
css = u'';
for api in self.APIs.values():
- css += api.getDisplayCss()
+ css += api.get_media_display_css()
return css
- def getDisplayJavascript(self):
+ def get_media_display_javascript(self):
"""
Add javascript functions to htmlbuilder
"""
js = u''
for api in self.APIs.values():
- js += api.getDisplayJavascript()
+ js += api.get_media_display_javascript()
return js
- def getDisplayHtml(self):
+ def get_media_display_html(self):
"""
Add html code to htmlbuilder
"""
html = u''
for api in self.APIs.values():
- html += api.getDisplayHtml()
+ html += api.get_media_display_html()
return html
- def addControllerItems(self, controller, control_panel):
+ def add_controller_items(self, controller, control_panel):
self.controller.append(controller)
self.setup_generic_controls(controller, control_panel)
for api in self.APIs.values():
@@ -210,7 +210,7 @@ class MediaManager(object):
controller.mediabar.addToolbarWidget(u'Audio Volume', controller.volumeSlider)
control_panel.addWidget(controller.mediabar)
controller.mediabar.setVisible(False)
- #Signals
+ # Signals
QtCore.QObject.connect(controller.seekSlider,
QtCore.SIGNAL(u'sliderMoved(int)'), controller.sendToPlugins)
QtCore.QObject.connect(controller.volumeSlider,
@@ -277,20 +277,26 @@ class MediaManager(object):
display = controller.previewDisplay
isValid = self.check_file_type(controller, display)
if not isValid:
- #Media could not be loaded correctly
+ # Media could not be loaded correctly
critical_error_message_box(
translate('MediaPlugin.MediaItem', 'Unsupported File'),
unicode(translate('MediaPlugin.MediaItem',
'Unsupported File')))
return False
- #now start playing
- self.video_play([controller])
- self.video_pause([controller])
- self.video_seek([controller, [0]])
- self.video_play([controller])
- self.set_controls_visible(controller, True)
- log.debug(u'use %s controller' % self.curDisplayMediaAPI[display])
- return True
+ # now start playing
+ if self.video_play([controller]):
+ self.video_pause([controller])
+ self.video_seek([controller, [0]])
+ if self.video_play([controller]):
+ self.set_controls_visible(controller, True)
+ log.debug(u'use %s controller' % self.curDisplayMediaAPI[display])
+ return True
+ else:
+ critical_error_message_box(
+ translate('MediaPlugin.MediaItem', 'Unsupported File'),
+ unicode(translate('MediaPlugin.MediaItem',
+ 'Unsupported File')))
+ return False
def check_file_type(self, controller, display):
"""
@@ -310,7 +316,13 @@ class MediaManager(object):
self.resize(controller, display, api)
if api.load(display):
self.curDisplayMediaAPI[display] = api
+ controller.media_info.media_type = MediaType.Video
return True
+ if suffix in api.audio_extensions_list:
+ if api.load(display):
+ self.curDisplayMediaAPI[display] = api
+ controller.media_info.media_type = MediaType.Audio
+ return True
# no valid api found
return False
@@ -325,17 +337,19 @@ class MediaManager(object):
if controller.isLive:
if controller.hideMenu.defaultAction().isChecked():
controller.hideMenu.defaultAction().trigger()
- #Receiver.send_message(u'maindisplay_show')
- self.curDisplayMediaAPI[display].play(display)
+ if not self.curDisplayMediaAPI[display].play(display):
+ return False
+ self.curDisplayMediaAPI[display].set_visible(display, True)
# Start Timer for ui updates
if not self.Timer.isActive():
self.Timer.start()
+ return True
def video_pause(self, msg):
"""
Responds to the request to pause a loaded video
"""
- log.debug(u'videoPause')
+ log.debug(u'video_pause')
controller = msg[0]
for display in self.curDisplayMediaAPI.keys():
if display.controller == controller:
@@ -383,6 +397,7 @@ class MediaManager(object):
if display.controller == controller:
display.override = {}
self.curDisplayMediaAPI[display].reset(display)
+ self.curDisplayMediaAPI[display].set_visible(display, False)
del self.curDisplayMediaAPI[display]
self.set_controls_visible(controller, False)
@@ -428,9 +443,9 @@ class MediaManager(object):
if display.controller == controller:
if self.curDisplayMediaAPI[display] \
.state == MediaState.Paused:
- self.curDisplayMediaAPI[display].play(display)
- self.curDisplayMediaAPI[display] \
- .set_visible(display, True)
+ if self.curDisplayMediaAPI[display].play(display):
+ self.curDisplayMediaAPI[display] \
+ .set_visible(display, True)
def get_audio_extensions_list(self):
audio_list = []
diff --git a/openlp/core/ui/media/phononapi.py b/openlp/core/ui/media/phononapi.py
index ee20fd1da..0fe8a1825 100644
--- a/openlp/core/ui/media/phononapi.py
+++ b/openlp/core/ui/media/phononapi.py
@@ -76,7 +76,6 @@ class PhononAPI(MediaAPI):
ext = u'*%s' % extension
if ext not in list:
list.append(ext)
- #self.parent.parent.serviceManagerContents.supportedSuffixes(extension[1:])
log.info(u'MediaPlugin: %s extensions: %s' % (mimetype,
u' '.join(extensions)))
# Add extensions for this mimetype from self.additional_extensions.
@@ -87,7 +86,6 @@ class PhononAPI(MediaAPI):
ext = u'*%s' % extension
if ext not in list:
list.append(ext)
- #self.parent.parent.serviceManagerContents.supportedSuffixes(extension[1:])
log.info(u'MediaPlugin: %s additional extensions: %s' % (mimetype,
u' '.join(self.additional_extensions[mimetype])))
@@ -133,19 +131,21 @@ class PhononAPI(MediaAPI):
volume = controller.media_info.volume
path = controller.media_info.file_info.absoluteFilePath()
display.mediaObject.setCurrentSource(Phonon.MediaSource(path))
- if not self.mediaStateWait(display, Phonon.StoppedState):
+ if not self.media_state_wait(display, Phonon.StoppedState):
return False
self.volume(display, volume)
return True
- def mediaStateWait(self, display, mediaState):
+ def media_state_wait(self, display, mediaState):
"""
Wait for the video to change its state
Wait no longer than 5 seconds.
"""
start = datetime.now()
- while display.mediaObject.state() != mediaState:
- if display.mediaObject.state() == Phonon.ErrorState:
+ current_state = display.mediaObject.state()
+ while current_state != mediaState:
+ current_state = display.mediaObject.state()
+ if current_state == Phonon.ErrorState:
return False
Receiver.send_message(u'openlp_process_events')
if (datetime.now() - start).seconds > 5:
@@ -162,7 +162,7 @@ class PhononAPI(MediaAPI):
controller.media_info.start_time > 0:
start_time = controller.media_info.start_time
display.mediaObject.play()
- if self.mediaStateWait(display, Phonon.PlayingState):
+ if self.media_state_wait(display, Phonon.PlayingState):
if start_time > 0:
self.seek(display, controller.media_info.start_time*1000)
self.volume(display, controller.media_info.volume)
@@ -170,11 +170,15 @@ class PhononAPI(MediaAPI):
int(display.mediaObject.totalTime()/1000)
controller.seekSlider.setMaximum(controller.media_info.length*1000)
self.state = MediaState.Playing
- self.set_visible(display, True)
+ #self.set_visible(display, True)
+ return True
+ else:
+ return False
def pause(self, display):
display.mediaObject.pause()
- self.state = MediaState.Paused
+ if self.media_state_wait(display, Phonon.PausedState):
+ self.state = MediaState.Paused
def stop(self, display):
display.mediaObject.stop()
diff --git a/openlp/core/ui/media/vlcapi.py b/openlp/core/ui/media/vlcapi.py
index 0af89438d..ffc928238 100644
--- a/openlp/core/ui/media/vlcapi.py
+++ b/openlp/core/ui/media/vlcapi.py
@@ -48,6 +48,11 @@ class VlcAPI(MediaAPI):
def __init__(self, parent):
MediaAPI.__init__(self, parent, u'Vlc')
self.parent = parent
+ self.audio_extensions_list = [
+ u'*.mp3'
+ , u'*.wav'
+ , u'*.ogg'
+ ]
self.video_extensions_list = [
u'*.3gp'
, u'*.asf', u'*.wmv'
@@ -56,10 +61,10 @@ class VlcAPI(MediaAPI):
, u'*.flv'
, u'*.mov'
, u'*.mp4'
- , u'*.ogm', u'*.ogg'
+ , u'*.ogm'
, u'*.mkv', u'*.mka'
, u'*.ts', u'*.mpg'
- , u'*.mpg', u'*.mp3', u'*.mp2'
+ , u'*.mpg', u'*.mp2'
, u'*.nsc'
, u'*.nsv'
, u'*.nut'
@@ -67,7 +72,7 @@ class VlcAPI(MediaAPI):
, u'*.a52', u'*.dts', u'*.aac', u'*.flac' ,u'*.dv', u'*.vid'
, u'*.tta', u'*.tac'
, u'*.ty'
- , u'*.wav', u'*.dts'
+ , u'*.dts'
, u'*.xa'
, u'*.iso'
]
@@ -120,7 +125,7 @@ class VlcAPI(MediaAPI):
self.volume(display, volume)
return True
- def mediaStateWait(self, display, mediaState):
+ def media_state_wait(self, display, mediaState):
"""
Wait for the video to change its state
Wait no longer than 5 seconds.
@@ -143,20 +148,23 @@ class VlcAPI(MediaAPI):
if controller.media_info.start_time > 0:
start_time = controller.media_info.start_time
display.vlcMediaPlayer.play()
- if self.mediaStateWait(display, vlc.State.Playing):
+ if self.media_state_wait(display, vlc.State.Playing):
if start_time > 0:
self.seek(display, controller.media_info.start_time*1000)
controller.media_info.length = \
int(display.vlcMediaPlayer.get_media().get_duration()/1000)
controller.seekSlider.setMaximum(controller.media_info.length*1000)
self.state = MediaState.Playing
- self.set_visible(display, True)
+ #self.set_visible(display, True)
+ return True
+ else:
+ return False
def pause(self, display):
if display.vlcMedia.get_state() != vlc.State.Playing:
return
display.vlcMediaPlayer.pause()
- if self.mediaStateWait(display, vlc.State.Paused):
+ if self.media_state_wait(display, vlc.State.Paused):
self.state = MediaState.Paused
def stop(self, display):
diff --git a/openlp/core/ui/media/webkitapi.py b/openlp/core/ui/media/webkitapi.py
index 08c2a8b5b..1fbb54576 100644
--- a/openlp/core/ui/media/webkitapi.py
+++ b/openlp/core/ui/media/webkitapi.py
@@ -44,6 +44,10 @@ class WebkitAPI(MediaAPI):
MediaAPI.__init__(self, parent, u'Webkit')
self.parent = parent
self.canBackground = True
+ self.audio_extensions_list = [
+ u'*.mp3'
+ , u'*.ogg'
+ ]
self.video_extensions_list = [
u'*.3gp'
, u'*.3gpp'
@@ -62,8 +66,6 @@ class WebkitAPI(MediaAPI):
, u'*.m4v'
, u'*.mkv'
, u'*.mp4'
- , u'*.mp3'
- , u'*.ogg'
, u'*.ogv'
, u'*.webm'
, u'*.swf', u'*.mpg', u'*.wmv', u'*.mpeg', u'*.avi'
@@ -73,7 +75,7 @@ class WebkitAPI(MediaAPI):
# no special controls
pass
- def getDisplayCss(self):
+ def get_media_display_css(self):
"""
Add css style sheets to htmlbuilder
"""
@@ -91,7 +93,7 @@ class WebkitAPI(MediaAPI):
return css
- def getDisplayJavascript(self):
+ def get_media_display_javascript(self):
"""
Add javascript functions to htmlbuilder
"""
@@ -99,7 +101,7 @@ class WebkitAPI(MediaAPI):
var video_timer = null;
var current_video = '1';
- function show_video(state, path, volume, loop, seekVal){
+ function show_video(state, path, volume, loop, varVal){
// Note, the preferred method for looping would be to use the
// video tag loop attribute.
// But QtWebKit doesn't support this. Neither does it support the
@@ -139,7 +141,7 @@ class WebkitAPI(MediaAPI):
break;
case 'play':
vid.play();
- vid.style.visibility = 'visible';
+ //vid.style.visibility = 'visible';
if(vid.looping){
video_timer = setInterval(
function() {
@@ -156,7 +158,6 @@ class WebkitAPI(MediaAPI):
break;
case 'stop':
show_video('pause');
- vid.style.visibility = 'hidden';
break;
case 'poll':
if(vid.ended||vid.currentTime+0.2>vid.duration)
@@ -182,7 +183,10 @@ class WebkitAPI(MediaAPI):
return vid.currentTime;
case 'seek':
// doesnt work currently
- //vid.currentTime = seekVal;
+ //vid.currentTime = varVal;
+ break;
+ case 'setVisible':
+ vid.style.visibility = varVal;
break;
}
}
@@ -197,8 +201,7 @@ class WebkitAPI(MediaAPI):
return document.embeds[movieName];
}
- // http://www.adobe.com/support/flash/publishexport/scriptingwithflash/scriptingwithflash_03.html
- function show_flash(state, path, volume, seekVal){
+ function show_flash(state, path, volume, varVal){
var text = document.getElementById('flash');
var flashMovie = getFlashMovieObject("OpenLPFlashMovie");
var src = "src = 'file:///" + path + "'";
@@ -214,27 +217,22 @@ class WebkitAPI(MediaAPI):
case 'load':
text.innerHTML = "";
flashMovie = getFlashMovieObject("OpenLPFlashMovie");
- text.style.visibility = 'visible';
flashMovie.Play();
break;
case 'play':
- text.style.visibility = 'visible';
flashMovie.Play();
break;
case 'pause':
flashMovie.StopPlay();
- text.style.visibility = 'hidden';
break;
case 'stop':
flashMovie.StopPlay();
- text.style.visibility = 'hidden';
tempHtml = text.innerHTML;
text.innerHTML = '';
text.innerHTML = tempHtml;
break;
case 'close':
flashMovie.StopPlay();
- text.style.visibility = 'hidden';
text.innerHTML = '';
break;
case 'length':
@@ -242,7 +240,10 @@ class WebkitAPI(MediaAPI):
case 'currentTime':
return flashMovie.CurrentFrame();
case 'seek':
- // flashMovie.GotoFrame(seekVal);
+ // flashMovie.GotoFrame(varVal);
+ break;
+ case 'setVisible':
+ text.style.visibility = varVal;
break;
}
}
@@ -250,16 +251,16 @@ class WebkitAPI(MediaAPI):
return js
- def getDisplayHtml(self):
+ def get_media_display_html(self):
"""
Add html code to htmlbuilder
"""
html = u'''
-
-
-
+
+
+
'''
return html
@@ -267,7 +268,6 @@ class WebkitAPI(MediaAPI):
display.webView.resize(display.size())
display.webView.raise_()
self.hasOwnWidget = False
- #display.webView.hide()
def check_available(self):
return True
@@ -287,7 +287,7 @@ class WebkitAPI(MediaAPI):
loop = u'false'
display.webView.setVisible(True)
if controller.media_info.file_info.suffix() == u'swf':
- controller.media_info.isFlash = True
+ controller.media_info.is_flash = True
js = u'show_flash("load","%s");' % \
(path.replace(u'\\', u'\\\\'))
else:
@@ -305,17 +305,18 @@ class WebkitAPI(MediaAPI):
display.webLoaded = True
length = 0
self.set_visible(display, True)
- if controller.media_info.isFlash:
+ if controller.media_info.is_flash:
display.frame.evaluateJavaScript(u'show_flash("play");')
else:
display.frame.evaluateJavaScript(u'show_video("play");')
- #TODO add playing check and get the correct media length
+ # TODO add playing check and get the correct media length
controller.media_info.length = length
self.state = MediaState.Playing
+ return True
def pause(self, display):
controller = display.controller
- if controller.media_info.isFlash:
+ if controller.media_info.is_flash:
display.frame.evaluateJavaScript(u'show_flash("pause");')
else:
display.frame.evaluateJavaScript(u'show_video("pause");')
@@ -323,7 +324,7 @@ class WebkitAPI(MediaAPI):
def stop(self, display):
controller = display.controller
- if controller.media_info.isFlash:
+ if controller.media_info.is_flash:
display.frame.evaluateJavaScript(u'show_flash("stop");')
else:
display.frame.evaluateJavaScript(u'show_video("stop");')
@@ -334,13 +335,13 @@ class WebkitAPI(MediaAPI):
# 1.0 is the highest value
if display.hasAudio:
vol = float(vol) / float(100)
- if not controller.media_info.isFlash:
+ if not controller.media_info.is_flash:
display.frame.evaluateJavaScript(
u'show_video(null, null, %s);' % str(vol))
def seek(self, display, seekVal):
controller = display.controller
- if controller.media_info.isFlash:
+ if controller.media_info.is_flash:
seek = seekVal
display.frame.evaluateJavaScript( \
u'show_flash("seek", null, null, "%s");' % (seek))
@@ -351,19 +352,28 @@ class WebkitAPI(MediaAPI):
def reset(self, display):
controller = display.controller
- if controller.media_info.isFlash:
+ if controller.media_info.is_flash:
display.frame.evaluateJavaScript(u'show_flash("close");')
else:
display.frame.evaluateJavaScript(u'show_video("close");')
self.state = MediaState.Off
def set_visible(self, display, status):
- if self.hasOwnWidget:
- display.webView.setVisible(status)
+ controller = display.controller
+ if status:
+ is_visible = "visible"
+ else:
+ is_visible = "hidden"
+ if controller.media_info.is_flash:
+ display.frame.evaluateJavaScript(u'show_flash( \
+ "setVisible", null, null, "%s");' % (is_visible))
+ else:
+ display.frame.evaluateJavaScript(u'show_video( \
+ "setVisible", null, null, null, "%s");' % (is_visible))
def update_ui(self, display):
controller = display.controller
- if controller.media_info.isFlash:
+ if controller.media_info.is_flash:
currentTime = display.frame.evaluateJavaScript( \
u'show_flash("currentTime");').toInt()[0]
length = display.frame.evaluateJavaScript( \
@@ -372,12 +382,12 @@ class WebkitAPI(MediaAPI):
(currentTime, ok) = display.frame.evaluateJavaScript( \
u'show_video("currentTime");').toFloat()
# check if conversion was ok and value is not 'NaN'
- if ok and currentTime == currentTime:
+ if ok and currentTime != float('inf'):
currentTime = int(currentTime*1000)
(length, ok) = display.frame.evaluateJavaScript( \
u'show_video("length");').toFloat()
# check if conversion was ok and value is not 'NaN'
- if ok and length == length:
+ if ok and length != float('inf'):
length = int(length*1000)
if currentTime > 0:
controller.media_info.length = length
diff --git a/openlp/core/ui/slidecontroller.py b/openlp/core/ui/slidecontroller.py
index ab5045bb5..12d787966 100644
--- a/openlp/core/ui/slidecontroller.py
+++ b/openlp/core/ui/slidecontroller.py
@@ -253,7 +253,7 @@ class SlideController(Controller):
self.onEditSong)
self.controllerLayout.addWidget(self.toolbar)
# Build the Media Toolbar
- self.mediaManager.addControllerItems(self, self.controllerLayout)
+ self.mediaManager.add_controller_items(self, self.controllerLayout)
if self.isLive:
# Build the Song Toolbar
self.songMenu = QtGui.QToolButton(self.toolbar)
@@ -501,7 +501,7 @@ class SlideController(Controller):
self.playSlidesOnce.setChecked(False)
self.playSlidesOnce.setIcon(build_icon(u':/media/media_time.png'))
self.playSlidesLoop.setChecked(False)
- self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png'))
+ self.playSlidesLoop.setIcon(build_icon(u':/media/media_time.png'))
if item.is_text():
if QtCore.QSettings().value(
self.parent().songsSettingsSection + u'/display songbar',
@@ -512,9 +512,13 @@ class SlideController(Controller):
self.toolbar.makeWidgetsVisible(self.loopList)
if item.is_media():
self.mediabar.setVisible(True)
+ self.previousItem.setVisible(False)
+ self.nextItem.setVisible(False)
else:
# Work-around for OS X, hide and then show the toolbar
# See bug #791050
+ self.previousItem.setVisible(True)
+ self.nextItem.setVisible(True)
self.toolbar.show()
self.toolbar.show()
diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py
index 88f24e09f..d790eb8f6 100644
--- a/openlp/plugins/media/lib/mediaitem.py
+++ b/openlp/plugins/media/lib/mediaitem.py
@@ -56,11 +56,15 @@ class MediaMediaItem(MediaManagerItem):
self.mediaObject = None
self.mediaController = Controller(parent)
self.mediaController.controllerLayout = QtGui.QVBoxLayout()
- self.plugin.mediaManager.addControllerItems(self.mediaController, self.mediaController.controllerLayout)
- self.plugin.mediaManager.set_controls_visible(self.mediaController, False)
- self.mediaController.previewDisplay = Display(self.mediaController, False, self.mediaController, self.plugin.pluginManager.plugins)
+ self.plugin.mediaManager.add_controller_items(self.mediaController, \
+ self.mediaController.controllerLayout)
+ self.plugin.mediaManager.set_controls_visible(self.mediaController, \
+ False)
+ self.mediaController.previewDisplay = Display(self.mediaController, \
+ False, self.mediaController, self.plugin.pluginManager.plugins)
self.mediaController.previewDisplay.setup()
- self.plugin.mediaManager.setup_display(self.mediaController.previewDisplay)
+ self.plugin.mediaManager.setup_display( \
+ self.mediaController.previewDisplay)
self.mediaController.previewDisplay.hide()
QtCore.QObject.connect(Receiver.get_receiver(),
@@ -100,7 +104,7 @@ class MediaMediaItem(MediaManagerItem):
def onResetClick(self):
"""
- Called to reset the Live backgound with the media selected,
+ Called to reset the Live background with the media selected,
"""
self.plugin.liveController.mediaManager.video_reset( \
self.plugin.liveController)
@@ -114,7 +118,7 @@ class MediaMediaItem(MediaManagerItem):
def onReplaceClick(self):
"""
- Called to replace Live backgound with the media selected.
+ Called to replace Live background with the media selected.
"""
if check_item_selected(self.listView,
translate('MediaPlugin.MediaItem',
@@ -122,7 +126,7 @@ class MediaMediaItem(MediaManagerItem):
item = self.listView.currentItem()
filename = unicode(item.data(QtCore.Qt.UserRole).toString())
if os.path.exists(filename):
- (path, name) = os.path.split(filename)
+ #(path, name) = os.path.split(filename)
if self.plugin.liveController.mediaManager.video( \
self.plugin.liveController, filename, True, True):
self.resetAction.setVisible(True)
@@ -158,6 +162,8 @@ class MediaMediaItem(MediaManagerItem):
if self.mediaLength > 0:
service_item.add_capability(
ItemCapabilities.AllowsVariableStartTime)
+ else:
+ return False
service_item.media_length = self.mediaLength
service_item.title = unicode(self.plugin.nameStrings[u'singular'])
service_item.add_capability(ItemCapabilities.RequiresMedia)
diff --git a/openlp/plugins/media/lib/mediatab.py b/openlp/plugins/media/lib/mediatab.py
index 15474c248..dc2dcc00e 100644
--- a/openlp/plugins/media/lib/mediatab.py
+++ b/openlp/plugins/media/lib/mediatab.py
@@ -53,7 +53,6 @@ class MediaTab(SettingsTab):
self.ApiCheckBoxes[api.name] = checkbox
self.mediaApiLayout.addWidget(checkbox)
self.leftLayout.addWidget(self.mediaAPIGroupBox)
-
self.apiOrderGroupBox = QtGui.QGroupBox(self.leftColumn)
self.apiOrderGroupBox.setObjectName(u'apiOrderGroupBox')
self.apiOrderLayout = QtGui.QVBoxLayout(self.apiOrderGroupBox)
@@ -67,7 +66,6 @@ class MediaTab(SettingsTab):
sizePolicy.setHeightForWidth(self.apiOrderlistWidget. \
sizePolicy().hasHeightForWidth())
self.apiOrderlistWidget.setSizePolicy(sizePolicy)
-
self.apiOrderlistWidget.setVerticalScrollBarPolicy( \
QtCore.Qt.ScrollBarAsNeeded)
self.apiOrderlistWidget.setHorizontalScrollBarPolicy( \
diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py
index e977ce36d..e0cf8d65e 100644
--- a/openlp/plugins/media/mediaplugin.py
+++ b/openlp/plugins/media/mediaplugin.py
@@ -99,21 +99,22 @@ class MediaPlugin(Plugin):
"""
log.info(u'Media Finalising')
self.mediaManager.finalise()
+ Plugin.finalise(self)
def getDisplayCss(self):
"""
Add css style sheets to htmlbuilder
"""
- return self.mediaManager.getDisplayCss()
+ return self.mediaManager.get_media_display_css()
def getDisplayJavascript(self):
"""
Add javascript functions to htmlbuilder
"""
- return self.mediaManager.getDisplayJavascript()
+ return self.mediaManager.get_media_display_javascript()
def getDisplayHtml(self):
"""
Add html code to htmlbuilder
"""
- return self.mediaManager.getDisplayHtml()
+ return self.mediaManager.get_media_display_html()