forked from openlp/openlp
Fix up Image plugin so it now works again!
Render the images correctly to reflect the screen size Add images to slide controller Fix ImagePlugin selction criteria Amend the loing format.
This commit is contained in:
parent
714ae4647d
commit
5303d0673b
|
@ -26,7 +26,7 @@ from PyQt4 import QtCore, QtGui
|
|||
from openlp.core.lib import Receiver
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG,
|
||||
format=u'%(asctime)s %(msecs)d %(name)-12s %(levelname)-8s %(message)s',
|
||||
format=u'%(asctime)s:%(msecs)3d %(name)-15s %(levelname)-8s %(message)s',
|
||||
datefmt=u'%m-%d %H:%M:%S', filename=u'openlp.log', filemode=u'w')
|
||||
|
||||
from openlp.core.resources import *
|
||||
|
|
|
@ -136,8 +136,6 @@ class Renderer:
|
|||
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.
|
||||
#self._frame = QtGui.QPixmap(self._frame.width(), self._frame.height()) #(self._bg_frame)
|
||||
#self._frame.fill(QtCore.Qt.transparent)
|
||||
# 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)
|
||||
|
@ -445,4 +443,4 @@ class Renderer:
|
|||
im.save(u'renderer.png', u'png')
|
||||
if image2 is not None:
|
||||
im = image2.toImage()
|
||||
im.save(u'renderer2.png', u'png')
|
||||
im.save(u'renderer2.png', u'png')
|
||||
|
|
|
@ -139,6 +139,20 @@ class RenderManager:
|
|||
self.renderer.set_frame_dest(self.width, self.height)
|
||||
return self.renderer.generate_frame_from_lines(main_text, footer_text)
|
||||
|
||||
def resize_image(self, image):
|
||||
preview = QtGui.QImage(image)
|
||||
w = self.width
|
||||
h = self.height
|
||||
preview = preview.scaled(w, h, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||
realw = preview.width();
|
||||
realh = preview.height()
|
||||
# and move it to the centre of the preview space
|
||||
newImage = QtGui.QImage(w, h, QtGui.QImage.Format_ARGB32_Premultiplied)
|
||||
newImage.fill(QtCore.Qt.transparent)
|
||||
painter = QtGui.QPainter(newImage)
|
||||
painter.drawImage((w-realw) / 2 , (h-realh) / 2, preview)
|
||||
return newImage
|
||||
|
||||
def calculate_default(self, screen):
|
||||
log.debug(u'calculate default %s' , screen)
|
||||
self.width = screen.width()
|
||||
|
|
|
@ -49,6 +49,8 @@ class ServiceItem():
|
|||
self.frames = []
|
||||
self.raw_footer = None
|
||||
self.theme = None
|
||||
self.service_item_path = None
|
||||
self.service_item_type = None
|
||||
#log.debug(u'Service item created for %s ', self.shortname)
|
||||
self.service_frames = []
|
||||
|
||||
|
@ -77,13 +79,16 @@ class ServiceItem():
|
|||
self.frames = self.service_frames
|
||||
self.service_frames = []
|
||||
elif self.service_item_type == u'image':
|
||||
for slide in self.service_frames:
|
||||
slide[u'image'] = self.RenderManager.resize_image(slide[u'image'])
|
||||
self.frames = self.service_frames
|
||||
self.service_frames = []
|
||||
else:
|
||||
log.error(u'Invalid value renderer :%s' % self.service_item_type)
|
||||
|
||||
def add_from_image(self, frame_title, image):
|
||||
def add_from_image(self, path, frame_title, image):
|
||||
self.service_item_type = u'image'
|
||||
self.service_item_path = path
|
||||
self.service_frames.append({u'title': frame_title, u'image': image})
|
||||
|
||||
def add_from_text(self, frame_title, raw_slide):
|
||||
|
@ -110,8 +115,8 @@ class ServiceItem():
|
|||
|
||||
def set_from_oos(self, serviceitem):
|
||||
"""
|
||||
This method takes some oostext (passed from the ServiceManager)
|
||||
and parses it into the data actually required
|
||||
This method takes some oos list (passed from the ServiceManager)
|
||||
and extracts the data actually required
|
||||
"""
|
||||
header = serviceitem[u'serviceitem'][u'header']
|
||||
self.title = header[u'title']
|
||||
|
|
|
@ -137,8 +137,9 @@ class SlideController(QtGui.QWidget):
|
|||
self.PreviewListView.setIconSize(QtCore.QSize(250, 190))
|
||||
self.PreviewListData = SlideData()
|
||||
self.PreviewListView.isLive = self.isLive
|
||||
#self.PreviewListView.setFlow(1)
|
||||
#self.PreviewListView.setViewMode(1)
|
||||
if QtCore.QT_VERSION_STR > u'4.4.0':
|
||||
self.PreviewListView.setFlow(1)
|
||||
self.PreviewListView.setViewMode(1)
|
||||
self.PreviewListView.setWrapping(False)
|
||||
self.PreviewListView.setModel(self.PreviewListData)
|
||||
self.PreviewListView.setSpacing(0)
|
||||
|
@ -321,4 +322,4 @@ class SlideController(QtGui.QWidget):
|
|||
if row.isValid():
|
||||
self.PreviewListView.selectionModel().setCurrentIndex(row,
|
||||
QtGui.QItemSelectionModel.SelectCurrent)
|
||||
self.onSlideSelected(row)
|
||||
self.onSlideSelected(row)
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"""
|
||||
OpenLP - Open Source Lyrics Projection
|
||||
Copyright (c) 2008 - 2009 Raoul Snyman
|
||||
Portions copyright (c) 2008 Martin Thompson, Tim Bentley,
|
||||
Portions copyright (c) 2008 - 2009 Martin Thompson, Tim Bentley,
|
||||
|
||||
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
|
||||
|
@ -17,7 +17,3 @@ 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
|
||||
"""
|
||||
|
||||
#from imageplugin import ImagePlugin
|
||||
#from imageserviceitem import ImageServiceItem
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"""
|
||||
OpenLP - Open Source Lyrics Projection
|
||||
Copyright (c) 2008 Raoul Snyman
|
||||
Portions copyright (c) 2008 Martin Thompson, Tim Bentley,
|
||||
Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley,
|
||||
|
||||
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
|
||||
|
@ -22,7 +22,7 @@ import logging
|
|||
from PyQt4 import QtCore, QtGui
|
||||
|
||||
from openlp.core.lib import Plugin, Event, EventType
|
||||
from openlp.plugins.images.lib import ImageMediaItem, ImageServiceItem
|
||||
from openlp.plugins.images.lib import ImageMediaItem
|
||||
|
||||
class ImagePlugin(Plugin):
|
||||
global log
|
||||
|
@ -38,9 +38,6 @@ class ImagePlugin(Plugin):
|
|||
self.icon.addPixmap(QtGui.QPixmap(u':/media/media_image.png'),
|
||||
QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
|
||||
self.preview_service_item = ImageServiceItem(self.preview_controller)
|
||||
self.live_service_item = ImageServiceItem(self.live_controller)
|
||||
|
||||
def get_media_manager_item(self):
|
||||
# Create the MediaManagerItem object
|
||||
self.media_item = ImageMediaItem(self, self.icon, u'Images')
|
||||
|
@ -63,5 +60,3 @@ class ImagePlugin(Plugin):
|
|||
if event.event_type == EventType.LiveShow and event.payload == 'Image':
|
||||
log.debug(u'Load Live Show Item received')
|
||||
self.media_item.onImageLiveClick()
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
"""
|
||||
OpenLP - Open Source Lyrics Projection
|
||||
Copyright (c) 2008 - 2009 Raoul Snyman
|
||||
Portions copyright (c) 2008 Martin Thompson, Tim Bentley,
|
||||
Portions copyright (c) 2008 - 2009 Martin Thompson, Tim Bentley,
|
||||
|
||||
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
|
||||
|
@ -18,5 +18,4 @@ this program; if not, write to the Free Software Foundation, Inc., 59 Temple
|
|||
Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
"""
|
||||
from listwithpreviews import ListWithPreviews
|
||||
from imageserviceitem import ImageServiceItem
|
||||
from mediaitem import ImageMediaItem
|
||||
|
|
|
@ -34,34 +34,35 @@ class ListWithPreviews(QtCore.QAbstractListModel):
|
|||
# will be a list of (full filename, QPixmap, shortname) tuples
|
||||
self.items = []
|
||||
self.rowheight = 50
|
||||
self.maximagewidth = self.rowheight*16/9.0;
|
||||
self.maximagewidth = self.rowheight * 16 / 9.0;
|
||||
|
||||
def rowCount(self, parent):
|
||||
return len(self.items)
|
||||
|
||||
def insertRow(self, row, filename):
|
||||
self.beginInsertRows(QtCore.QModelIndex(),row,row)
|
||||
self.beginInsertRows(QtCore.QModelIndex(), row, row)
|
||||
#log.info(u'insert row %d:%s' % (row,filename))
|
||||
# get short filename to display next to image
|
||||
(prefix, shortfilename) = os.path.split(unicode(filename))
|
||||
filename = unicode(filename)
|
||||
(prefix, shortfilename) = os.path.split(filename)
|
||||
#log.info(u'shortfilename=%s' % (shortfilename))
|
||||
# create a preview image
|
||||
if os.path.exists(filename):
|
||||
preview = QtGui.QPixmap(unicode(filename))
|
||||
preview = QtGui.QImage(filename)
|
||||
w = self.maximagewidth;
|
||||
h = self.rowheight
|
||||
preview = preview.scaled(w, h, QtCore.Qt.KeepAspectRatio, QtCore.Qt.SmoothTransformation)
|
||||
realw = preview.width();
|
||||
realh = preview.height()
|
||||
# and move it to the centre of the preview space
|
||||
p = QtGui.QPixmap(w,h)
|
||||
p = QtGui.QImage(w, h, QtGui.QImage.Format_ARGB32_Premultiplied)
|
||||
p.fill(QtCore.Qt.transparent)
|
||||
painter = QtGui.QPainter(p)
|
||||
painter.drawPixmap((w-realw)/2,(h-realh)/2,preview)
|
||||
painter.drawImage((w-realw) / 2 , (h-realh) / 2, preview)
|
||||
else:
|
||||
w = self.maximagewidth;
|
||||
h = self.rowheight
|
||||
p = QtGui.QPixmap(w,h)
|
||||
p = QtGui.QImage(w, h, QtGui.QImage.Format_ARGB32_Premultiplied)
|
||||
p.fill(QtCore.Qt.transparent)
|
||||
# finally create the row
|
||||
self.items.insert(row, (filename, p, shortfilename))
|
||||
|
|
|
@ -51,7 +51,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||
This is the custom media manager item for images.
|
||||
"""
|
||||
global log
|
||||
log=logging.getLogger(u'ImageMediaItem')
|
||||
log = logging.getLogger(u'ImageMediaItem')
|
||||
log.info(u'Image Media Item loaded')
|
||||
|
||||
def __init__(self, parent, icon, title):
|
||||
|
@ -95,7 +95,7 @@ class ImageMediaItem(MediaManagerItem):
|
|||
self.ImageListView.setModel(self.ImageListData)
|
||||
self.ImageListView.setGeometry(QtCore.QRect(10, 100, 256, 591))
|
||||
self.ImageListView.setSpacing(1)
|
||||
self.ImageListView.setSelectionMode(QtGui.QAbstractItemView.MultiSelection)
|
||||
self.ImageListView.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
|
||||
self.ImageListView.setAlternatingRowColors(True)
|
||||
self.ImageListView.setDragEnabled(True)
|
||||
self.ImageListView.setObjectName(u'ImageListView')
|
||||
|
@ -114,6 +114,8 @@ class ImageMediaItem(MediaManagerItem):
|
|||
self.ImageListView, ':/system/system_add.png',
|
||||
translate(u'ImageMediaItem', u'&Add to Service'),
|
||||
self.onImageAddClick))
|
||||
QtCore.QObject.connect(self.ImageListView,
|
||||
QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onImagePreviewClick)
|
||||
|
||||
def initialise(self):
|
||||
self.loadImageList(self.parent.config.load_list(u'images'))
|
||||
|
@ -143,12 +145,12 @@ class ImageMediaItem(MediaManagerItem):
|
|||
|
||||
def generateSlideData(self, service_item):
|
||||
indexes = self.ImageListView.selectedIndexes()
|
||||
service_item.title = u'Images'
|
||||
service_item.title = u'Image(s)'
|
||||
for index in indexes:
|
||||
filename = self.ImageListData.getFilename(index)
|
||||
frame = QtGui.QPixmap(unicode(filename))
|
||||
(path, name) =os.path.split(filename)
|
||||
service_item.add_from_image(name, frame)
|
||||
frame = QtGui.QImage(unicode(filename))
|
||||
(path, name) = os.path.split(filename)
|
||||
service_item.add_from_image(path, name, frame)
|
||||
|
||||
def onImagePreviewClick(self):
|
||||
log.debug(u'Image Preview Requested')
|
||||
|
|
Loading…
Reference in New Issue