← Back to team overview

openlp-core team mailing list archive

[Merge] lp:~trb143/openlp/working into lp:openlp

 

Tim Bentley has proposed merging lp:~trb143/openlp/working into lp:openlp.

Requested reviews:
  OpenLP Core (openlp-core)


Fix loop in ending video to stop crashes.
Add comments 
rename _frame and _frameOP
-- 
https://code.launchpad.net/~trb143/openlp/working/+merge/24544
Your team OpenLP Core is subscribed to branch lp:openlp.
=== modified file 'openlp/core/lib/renderer.py'
--- openlp/core/lib/renderer.py	2010-04-30 21:00:17 +0000
+++ openlp/core/lib/renderer.py	2010-05-01 07:19:17 +0000
@@ -48,8 +48,8 @@
         self.theme_name = None
         self._theme = None
         self._bg_image_filename = None
-        self._frame = None
-        self._frameOp = None
+        self.frame = None
+        self.frame_opaque = None
         self.bg_frame = None
         self.bg_image = None
 
@@ -89,10 +89,10 @@
         """
         log.debug(u'set bg image %s', filename)
         self._bg_image_filename = unicode(filename)
-        if self._frame:
+        if self.frame:
             self.bg_image = resize_image(self._bg_image_filename,
-                                         self._frame.width(),
-                                         self._frame.height())
+                                         self.frame.width(),
+                                         self.frame.height())
 
     def set_frame_dest(self, frame_width, frame_height, preview=False):
         """
@@ -111,13 +111,13 @@
             self.bg_frame = None
         log.debug(u'set frame dest (frame) w %d h %d', frame_width,
             frame_height)
-        self._frame = QtGui.QImage(frame_width, frame_height,
+        self.frame = QtGui.QImage(frame_width, frame_height,
             QtGui.QImage.Format_ARGB32_Premultiplied)
-        self._frameOp = QtGui.QImage(frame_width, frame_height,
+        self.frame_opaque = QtGui.QImage(frame_width, frame_height,
             QtGui.QImage.Format_ARGB32_Premultiplied)
         if self._bg_image_filename and not self.bg_image:
             self.bg_image = resize_image(self._bg_image_filename,
-                self._frame.width(), self._frame.height())
+                self.frame.width(), self.frame.height())
         if self.bg_frame is None:
             self._generate_background_frame()
 
@@ -242,9 +242,9 @@
         if footer_lines:
             bbox1 = self._render_lines_unaligned(footer_lines, True)
         # reset the frame. first time do not worry about what you paint on.
-        self._frame = QtGui.QImage(self.bg_frame)
+        self.frame = QtGui.QImage(self.bg_frame)
         if self._theme.display_slideTransition:
-            self._frameOp = QtGui.QImage(self.bg_frame)
+            self.frame_opaque = QtGui.QImage(self.bg_frame)
         x, y = self._correctAlignment(self._rect, bbox)
         bbox = self._render_lines_unaligned(lines, False, (x, y), True)
         if footer_lines:
@@ -252,9 +252,9 @@
                 (self._rect_footer.left(), self._rect_footer.top()), True)
         log.debug(u'generate_frame_from_lines - Finish')
         if self._theme.display_slideTransition:
-            return {u'main':self._frame, u'trans':self._frameOp}
+            return {u'main':self.frame, u'trans':self.frame_opaque}
         else:
-            return {u'main':self._frame, u'trans':None}
+            return {u'main':self.frame, u'trans':None}
 
     def _generate_background_frame(self):
         """
@@ -264,36 +264,36 @@
         assert(self._theme)
         if self._theme.background_mode == u'transparent':
             self.bg_frame = \
-                QtGui.QPixmap(self._frame.width(), self._frame.height())
+                QtGui.QPixmap(self.frame.width(), self.frame.height())
             self.bg_frame.fill(QtCore.Qt.transparent)
         else:
-            self.bg_frame = QtGui.QImage(self._frame.width(),
-                self._frame.height(), QtGui.QImage.Format_ARGB32_Premultiplied)
+            self.bg_frame = QtGui.QImage(self.frame.width(),
+                self.frame.height(), QtGui.QImage.Format_ARGB32_Premultiplied)
         log.debug(u'render background %s start', self._theme.background_type)
         painter = QtGui.QPainter()
         painter.begin(self.bg_frame)
         if self._theme.background_mode == u'transparent':
-            painter.fillRect(self._frame.rect(), QtCore.Qt.transparent)
+            painter.fillRect(self.frame.rect(), QtCore.Qt.transparent)
         else:
             if self._theme.background_type == u'solid':
-                painter.fillRect(self._frame.rect(),
+                painter.fillRect(self.frame.rect(),
                     QtGui.QColor(self._theme.background_color))
             elif self._theme.background_type == u'gradient':
                 # gradient
                 gradient = None
                 if self._theme.background_direction == u'horizontal':
-                    w = int(self._frame.width()) / 2
+                    w = int(self.frame.width()) / 2
                     # vertical
                     gradient = QtGui.QLinearGradient(w, 0, w,
-                        self._frame.height())
+                        self.frame.height())
                 elif self._theme.background_direction == u'vertical':
-                    h = int(self._frame.height()) / 2
+                    h = int(self.frame.height()) / 2
                     # Horizontal
-                    gradient = QtGui.QLinearGradient(0, h, self._frame.width(),
+                    gradient = QtGui.QLinearGradient(0, h, self.frame.width(),
                         h)
                 else:
-                    w = int(self._frame.width()) / 2
-                    h = int(self._frame.height()) / 2
+                    w = int(self.frame.width()) / 2
+                    h = int(self.frame.height()) / 2
                     # Circular
                     gradient = QtGui.QRadialGradient(w, h, w)
                 gradient.setColorAt(0,
@@ -302,8 +302,8 @@
                     QtGui.QColor(self._theme.background_endColor))
                 painter.setBrush(QtGui.QBrush(gradient))
                 rectPath = QtGui.QPainterPath()
-                max_x = self._frame.width()
-                max_y = self._frame.height()
+                max_x = self.frame.width()
+                max_y = self.frame.height()
                 rectPath.moveTo(0, 0)
                 rectPath.lineTo(0, max_y)
                 rectPath.lineTo(max_x, max_y)
@@ -312,7 +312,7 @@
                 painter.drawPath(rectPath)
             elif self._theme.background_type == u'image':
                 # image
-                painter.fillRect(self._frame.rect(), QtCore.Qt.black)
+                painter.fillRect(self.frame.rect(), QtCore.Qt.black)
                 if self.bg_image:
                     painter.drawImage(0, 0, self.bg_image)
         painter.end()
@@ -378,7 +378,7 @@
         retval = QtCore.QRect(x, y, brx - x, bry - y)
         if self._debug:
             painter = QtGui.QPainter()
-            painter.begin(self._frame)
+            painter.begin(self.frame)
             painter.setPen(QtGui.QPen(QtGui.QColor(0, 0, 255)))
             painter.drawRect(retval)
             painter.end()
@@ -414,11 +414,11 @@
         starty = y
         rightextent = None
         self.painter = QtGui.QPainter()
-        self.painter.begin(self._frame)
+        self.painter.begin(self.frame)
         self.painter.setRenderHint(QtGui.QPainter.Antialiasing)
         if self._theme.display_slideTransition:
             self.painter2 = QtGui.QPainter()
-            self.painter2.begin(self._frameOp)
+            self.painter2.begin(self.frame_opaque)
             self.painter2.setRenderHint(QtGui.QPainter.Antialiasing)
             self.painter2.setOpacity(0.7)
         # dont allow alignment messing with footers
@@ -581,4 +581,4 @@
         """
         image.save(u'renderer.png', u'png')
         if image2:
-            image2.save(u'renderer2.png', u'png')
+            image2.save(u'renderer2.png', u'png')
\ No newline at end of file

=== modified file 'openlp/core/ui/maindisplay.py'
--- openlp/core/ui/maindisplay.py	2010-04-30 21:00:17 +0000
+++ openlp/core/ui/maindisplay.py	2010-05-01 07:19:17 +0000
@@ -334,7 +334,7 @@
         self.parent = parent
         self.screens = screens
         self.hidden = False
-        self.background = False
+        self.message = None
         self.mediaObject = Phonon.MediaObject()
         self.setAspectRatio(aspect)
         self.audioObject = Phonon.AudioOutput(Phonon.VideoCategory)
@@ -389,16 +389,27 @@
             self.setVisible(False)
             self.primary = True
 
-    def onMediaBackground(self, message):
+    def onMediaBackground(self, message=None):
+        """
+        Play a video triggered from the video plugin with the
+        file name passed in on the event.
+        Also triggered from the Finish event so the video will loop
+        if it is triggered from the plugin
+        """
+        log.debug(u'VideoDisplay Queue new media message %s' % message)
+        #If not file take the stored one
         if not message:
             message = self.message
-        log.debug(u'VideoDisplay Queue new media message %s' % message)
-        self.mediaObject.setCurrentSource(Phonon.MediaSource(message))
-        self.message = message
-        self.background = True
-        self._play()
+        # still no file name then stop as it was a normal video stopping
+        if message:
+            self.mediaObject.setCurrentSource(Phonon.MediaSource(message))
+            self.message = message
+            self._play()
 
     def onMediaQueue(self, message):
+        """
+        Set up a video to play from the serviceitem.
+        """
         log.debug(u'VideoDisplay Queue new media message %s' % message)
         file = os.path.join(message[0].get_frame_path(),
             message[0].get_frame_title())
@@ -406,39 +417,60 @@
         self._play()
 
     def onMediaPlay(self):
+        """
+        Respond to the Play button on the slide controller unless the display
+        has been hidden by the slidecontroller
+        """
         if not self.hidden:
             log.debug(u'VideoDisplay Play the new media, Live ')
             self._play()
 
     def _play(self):
+        """
+        We want to play the video so start it and display the screen
+        """
         log.debug(u'VideoDisplay _play called')
         self.mediaObject.play()
         self.setVisible(True)
         self.showFullScreen()
 
     def onMediaPause(self):
+        """
+        Pause the video and refresh the screen
+        """
         log.debug(u'VideoDisplay Media paused by user')
         self.mediaObject.pause()
         self.show()
 
     def onMediaStop(self):
+        """
+        Stop the video and clean up
+        """
         log.debug(u'VideoDisplay Media stopped by user')
-        self.background = False
         self.message = None
         self.mediaObject.stop()
         self.onMediaFinish()
 
     def onMediaFinish(self):
+        """
+        Clean up the Object queue
+        """
         log.debug(u'VideoDisplay Reached end of media playlist')
         self.mediaObject.clearQueue()
         self.setVisible(False)
 
     def mediaHide(self):
+        """
+        Hide the video display
+        """
         self.mediaObject.pause()
         self.hidden = True
         self.setVisible(False)
 
     def mediaShow(self):
+        """
+        Show the video disaply if it was already hidden
+        """
         if self.hidden:
             self.hidden = False
             self._play()


Follow ups