diff --git a/openlp/core/lib/baselistwithdnd.py b/openlp/core/lib/baselistwithdnd.py index 21312dbdb..90c51ca90 100644 --- a/openlp/core/lib/baselistwithdnd.py +++ b/openlp/core/lib/baselistwithdnd.py @@ -20,14 +20,20 @@ Place, Suite 330, Boston, MA 02111-1307 USA import types from PyQt4 import QtCore, QtGui + from openlp.core.lib.toolbar import * from openlp.core.lib import translate class BaseListWithDnD(QtGui.QListView): + """ + Please put a short description of what this class does in here. + """ def __init__(self,parent = None): QtGui.QListView.__init__(self,parent) - assert (self.PluginName) # this must be set by the class which is inheriting + # this must be set by the class which is inheriting + assert(self.PluginName) + def mouseMoveEvent(self, event): """ Drag and drop event does not care what data is selected @@ -44,4 +50,3 @@ class BaseListWithDnD(QtGui.QListView): if dropAction == QtCore.Qt.CopyAction: self.close() - diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index af1335220..c262d58c9 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -20,10 +20,12 @@ Place, Suite 330, Boston, MA 02111-1307 USA import types from PyQt4 import QtCore, QtGui + from openlp.core.lib.toolbar import * from openlp.core.lib import translate from listwithpreviews import ListWithPreviews from serviceitem import ServiceItem + class MediaManagerItem(QtGui.QWidget): """ MediaManagerItem is a helper widget for plugins. @@ -107,7 +109,7 @@ class MediaManagerItem(QtGui.QWidget): QtCore.QObject.connect(action, QtCore.SIGNAL(u'triggered()'), slot) return action -#################################################################################################### + ########################################################################### ### None of the following *need* to be used, feel free to override ### them cmopletely in your plugin's implementation. Alternatively, call them from your ### plugin before or after you've done etra things that you need to. @@ -220,8 +222,7 @@ class MediaManagerItem(QtGui.QWidget): self.parent.config.set_list(self.ConfigSection, self.ListData.getFileList()) def generateSlideData(self): - #assert (0, 'This fn needs to be defined by the plugin'); - pass + raise NotImplementedError(u'MediaManagerItem.generateSlideData needs to be defined by the plugin') def onPreviewClick(self): log.debug(self.PluginTextShort+u'Preview Requested') diff --git a/openlp/core/lib/renderer.py b/openlp/core/lib/renderer.py index d4262bf89..e3774ba10 100644 --- a/openlp/core/lib/renderer.py +++ b/openlp/core/lib/renderer.py @@ -129,14 +129,12 @@ class Renderer: """ Render a set of lines according to the theme, return bounding box """ - #print "########## Generate frame from lines ##################" log.debug(u'generate_frame_from_lines - Start') #print "Render Lines ", lines bbox = self._render_lines_unaligned(lines, False) if footer_lines is not None: bbox1 = self._render_lines_unaligned(footer_lines, True) # reset the frame. first time do not worry about what you paint on. - # reset the frame. first time do not worry about what you paint on. self._frame = QtGui.QImage(self._bg_frame) x, y = self._correctAlignment(self._rect, bbox) bbox = self._render_lines_unaligned(lines, False, (x, y), True) @@ -158,18 +156,22 @@ class Renderer: painter.begin(self._bg_frame) if self._theme.background_type == u'solid': painter.fillRect(self._frame.rect(), QtGui.QColor(self._theme.background_color)) - elif self._theme.background_type == u'gradient' : # gradient + elif self._theme.background_type == u'gradient': + # gradient gradient = None if self._theme.background_direction == u'horizontal': w = int(self._frame.width()) / 2 - gradient = QtGui.QLinearGradient(w, 0, w, self._frame.height()) # vertical + # vertical + gradient = QtGui.QLinearGradient(w, 0, w, self._frame.height()) elif self._theme.background_direction == u'vertical': h = int(self._frame.height()) / 2 - gradient = QtGui.QLinearGradient(0, h, self._frame.width(), h) # Horizontal + # Horizontal + gradient = QtGui.QLinearGradient(0, h, self._frame.width(), h) else: w = int(self._frame.width()) / 2 h = int(self._frame.height()) / 2 - gradient = QtGui.QRadialGradient(w, h, w) # Circular + # Circular + gradient = QtGui.QRadialGradient(w, h, w) gradient.setColorAt(0, QtGui.QColor(self._theme.background_startColor)) gradient.setColorAt(1, QtGui.QColor(self._theme.background_endColor)) painter.setBrush(QtGui.QBrush(gradient)) @@ -182,7 +184,8 @@ class Renderer: rectPath.lineTo(max_x, 0) rectPath.closeSubpath() painter.drawPath(rectPath) - elif self._theme.background_type== u'image': # image + elif self._theme.background_type== u'image': + # image painter.fillRect(self._frame.rect(), QtCore.Qt.black) if self.bg_image is not None: painter.drawImage(0 ,0 , self.bg_image) @@ -252,11 +255,14 @@ class Renderer: def _correctAlignment(self, rect, bbox): x = rect.left() - if int(self._theme.display_verticalAlign) == 0: # top align + if int(self._theme.display_verticalAlign) == 0: + # top align y = rect.top() - elif int(self._theme.display_verticalAlign) == 2: # bottom align + elif int(self._theme.display_verticalAlign) == 2: + # bottom align y = rect.bottom() - bbox.height() - elif int(self._theme.display_verticalAlign) == 1: # centre align + elif int(self._theme.display_verticalAlign) == 1: + # centre align y = rect.top() + (rect.height() - bbox.height()) / 2 else: log.error(u'Invalid value for theme.VerticalAlign:%s' % self._theme.display_verticalAlign) diff --git a/resources/videos/AspectRatioTest-16-9-ana.h264.mp4 b/resources/videos/AspectRatioTest-16-9-ana.h264.mp4 new file mode 100644 index 000000000..18d2674f6 Binary files /dev/null and b/resources/videos/AspectRatioTest-16-9-ana.h264.mp4 differ diff --git a/resources/videos/AspectRatioTest-16-9-squ.h264.mp4 b/resources/videos/AspectRatioTest-16-9-squ.h264.mp4 new file mode 100644 index 000000000..007e0d92c Binary files /dev/null and b/resources/videos/AspectRatioTest-16-9-squ.h264.mp4 differ diff --git a/resources/videos/AspectRatioTest-16-9-squ.xvid.avi b/resources/videos/AspectRatioTest-16-9-squ.xvid.avi new file mode 100644 index 000000000..019b2cc4c Binary files /dev/null and b/resources/videos/AspectRatioTest-16-9-squ.xvid.avi differ diff --git a/resources/videos/AspectRatioTest-4-3-ana.h264.mp4 b/resources/videos/AspectRatioTest-4-3-ana.h264.mp4 new file mode 100644 index 000000000..aa65750b8 Binary files /dev/null and b/resources/videos/AspectRatioTest-4-3-ana.h264.mp4 differ diff --git a/resources/videos/AspectRatioTest-4-3-squ.h264.mp4 b/resources/videos/AspectRatioTest-4-3-squ.h264.mp4 new file mode 100644 index 000000000..425734a81 Binary files /dev/null and b/resources/videos/AspectRatioTest-4-3-squ.h264.mp4 differ diff --git a/resources/videos/AspectRatioTest-4-3-squ.xvid.avi b/resources/videos/AspectRatioTest-4-3-squ.xvid.avi new file mode 100644 index 000000000..1414b217a Binary files /dev/null and b/resources/videos/AspectRatioTest-4-3-squ.xvid.avi differ diff --git a/resources/videos/AspectRatioTest-rand-squ.h264.mp4 b/resources/videos/AspectRatioTest-rand-squ.h264.mp4 new file mode 100644 index 000000000..943a7e379 Binary files /dev/null and b/resources/videos/AspectRatioTest-rand-squ.h264.mp4 differ diff --git a/resources/videos/left-720.png b/resources/videos/left-720.png new file mode 100644 index 000000000..fe4a6aa91 Binary files /dev/null and b/resources/videos/left-720.png differ diff --git a/resources/videos/normal-720.png b/resources/videos/normal-720.png new file mode 100644 index 000000000..ff11444ec Binary files /dev/null and b/resources/videos/normal-720.png differ diff --git a/resources/videos/right-720.png b/resources/videos/right-720.png new file mode 100644 index 000000000..7347f330f Binary files /dev/null and b/resources/videos/right-720.png differ diff --git a/resources/videos/synctest.24.avs b/resources/videos/synctest.24.avs new file mode 100644 index 000000000..8cb1c0807 --- /dev/null +++ b/resources/videos/synctest.24.avs @@ -0,0 +1,6 @@ +# audio/video sync test +# by: Andrew Lok +# 2009-06-22 + +Import("synctest.avsi") +SyncClip(23.976, 44100) diff --git a/resources/videos/synctest.24.muxed.avi b/resources/videos/synctest.24.muxed.avi new file mode 100644 index 000000000..21daf5273 Binary files /dev/null and b/resources/videos/synctest.24.muxed.avi differ diff --git a/resources/videos/synctest.24.muxed.mp4 b/resources/videos/synctest.24.muxed.mp4 new file mode 100644 index 000000000..32936d3d9 Binary files /dev/null and b/resources/videos/synctest.24.muxed.mp4 differ diff --git a/resources/videos/synctest.25.avs b/resources/videos/synctest.25.avs new file mode 100644 index 000000000..8f9e9a170 --- /dev/null +++ b/resources/videos/synctest.25.avs @@ -0,0 +1,6 @@ +# audio/video sync test +# by: Andrew Lok +# 2009-06-22 + +Import("synctest.avsi") +SyncClip(25, 48000) diff --git a/resources/videos/synctest.25.muxed.avi b/resources/videos/synctest.25.muxed.avi new file mode 100644 index 000000000..5fc863a1a Binary files /dev/null and b/resources/videos/synctest.25.muxed.avi differ diff --git a/resources/videos/synctest.30.avs b/resources/videos/synctest.30.avs new file mode 100644 index 000000000..0a752e134 --- /dev/null +++ b/resources/videos/synctest.30.avs @@ -0,0 +1,6 @@ +# audio/video sync test +# by: Andrew Lok +# 2009-06-22 + +Import("synctest.avsi") +SyncClip(29.97, 32000) diff --git a/resources/videos/synctest.30.muxed.avi b/resources/videos/synctest.30.muxed.avi new file mode 100644 index 000000000..c79fedc99 Binary files /dev/null and b/resources/videos/synctest.30.muxed.avi differ diff --git a/resources/videos/synctest.30.small.avs b/resources/videos/synctest.30.small.avs new file mode 100644 index 000000000..546267c82 --- /dev/null +++ b/resources/videos/synctest.30.small.avs @@ -0,0 +1,7 @@ +# audio/video sync test +# by: Andrew Lok +# 2009-06-22 + +Import("synctest.avsi") +SyncClip(29.97, 22050) +BicubicResize(640,360) diff --git a/resources/videos/synctest.30.small.muxed.avi b/resources/videos/synctest.30.small.muxed.avi new file mode 100644 index 000000000..479443b32 Binary files /dev/null and b/resources/videos/synctest.30.small.muxed.avi differ diff --git a/resources/videos/synctest.avsi b/resources/videos/synctest.avsi new file mode 100644 index 000000000..d31d158e9 --- /dev/null +++ b/resources/videos/synctest.avsi @@ -0,0 +1,47 @@ +# audio/video sync test +# by: Andrew Lok +# 2009-06-22 + +# +# This code is part of OpenLP's testsuite +# OpenLP - Open Source Lyrics Projection +# Copyright (c) 2009 Andrew Lok +# +# This program is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free Software +# Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place, Suite 330, Boston, MA 02111-1307 USA +# + +function SyncClip(float framerate, int audiorate) +{ + frames=30 + seconds=frames/framerate + + silence = Tone(seconds, 440, audiorate, 1, "silence", 1.0) + tone = Tone(seconds, 440, audiorate, 1, "sine", 1.0) + + silence2 = MonoToStereo(silence, silence) + left = MonoToStereo(tone, silence) + right = MonoToStereo(silence, tone) + + leftvid=ImageSource("left-720.png",end = frames, fps=framerate, use_DevIL=true) + rightvid=ImageSource("right-720.png",end = frames, fps=framerate, use_DevIL=true) + normalvid=ImageSource("normal-720.png",end = frames, fps=framerate, use_DevIL=true) + + cycle = AudioDub(leftvid,left) ++ AudioDub(normalvid,silence2) ++ AudioDub(rightvid,right) ++ AudioDub(normalvid,silence2) + + final = loop(cycle,times=5) + + final = final.ConvertToYV12() + final = final.info() + + return final +}