forked from openlp/openlp
Plugin cleanups - Image and Audit
This commit is contained in:
parent
38e0c1bc77
commit
d23f03bf9c
@ -127,7 +127,6 @@ from renderer import Renderer
|
|||||||
from rendermanager import RenderManager
|
from rendermanager import RenderManager
|
||||||
from mediamanageritem import MediaManagerItem
|
from mediamanageritem import MediaManagerItem
|
||||||
from baselistwithdnd import BaseListWithDnD
|
from baselistwithdnd import BaseListWithDnD
|
||||||
from listwithpreviews import ListWithPreviews
|
|
||||||
|
|
||||||
__all__ = [ 'translate', 'file_to_xml', 'str_to_bool',
|
__all__ = [ 'translate', 'file_to_xml', 'str_to_bool',
|
||||||
'contextMenuAction', 'contextMenuSeparator','ServiceItem']
|
'contextMenuAction', 'contextMenuSeparator','ServiceItem']
|
||||||
|
@ -1,122 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# OpenLP - Open Source Lyrics Projection #
|
|
||||||
# --------------------------------------------------------------------------- #
|
|
||||||
# Copyright (c) 2008-2009 Raoul Snyman #
|
|
||||||
# Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Carsten #
|
|
||||||
# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri #
|
|
||||||
# --------------------------------------------------------------------------- #
|
|
||||||
# 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 #
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
import os
|
|
||||||
import logging
|
|
||||||
from PyQt4 import QtCore, QtGui
|
|
||||||
|
|
||||||
class ListWithPreviews(QtCore.QAbstractListModel):
|
|
||||||
"""
|
|
||||||
An abstract list of unicodeings and the preview icon to go with them
|
|
||||||
"""
|
|
||||||
global log
|
|
||||||
log = logging.getLogger(u'ListWithPreviews')
|
|
||||||
log.info(u'started')
|
|
||||||
|
|
||||||
def __init__(self, new_preview_function=None):
|
|
||||||
QtCore.QAbstractListModel.__init__(self)
|
|
||||||
# will be a list of (full filename, QPixmap, shortname) tuples
|
|
||||||
self.items = []
|
|
||||||
self.rowheight = 50
|
|
||||||
self.maximagewidth = self.rowheight * 16 / 9.0;
|
|
||||||
self.preview_function = new_preview_function
|
|
||||||
|
|
||||||
def make_preview(self, filename):
|
|
||||||
if os.path.exists(filename):
|
|
||||||
if self.preview_function is not None:
|
|
||||||
preview=self.preview_function(filename)
|
|
||||||
else:
|
|
||||||
preview = QtGui.QImage(filename)
|
|
||||||
else:
|
|
||||||
preview = None
|
|
||||||
|
|
||||||
if preview is not None:
|
|
||||||
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.QImage(w, h, QtGui.QImage.Format_ARGB32_Premultiplied)
|
|
||||||
p.fill(QtCore.Qt.transparent)
|
|
||||||
painter = QtGui.QPainter(p)
|
|
||||||
painter.drawImage((w-realw) / 2, (h-realh) / 2, preview)
|
|
||||||
else:
|
|
||||||
w = self.maximagewidth;
|
|
||||||
h = self.rowheight
|
|
||||||
p = QtGui.QImage(w, h, QtGui.QImage.Format_ARGB32_Premultiplied)
|
|
||||||
p.fill(QtCore.Qt.transparent)
|
|
||||||
return p
|
|
||||||
|
|
||||||
def rowCount(self, parent):
|
|
||||||
return len(self.items)
|
|
||||||
|
|
||||||
def insertRow(self, row, filename):
|
|
||||||
self.beginInsertRows(QtCore.QModelIndex(), row, row)
|
|
||||||
#log.info(u'insert row %d:%s' % (row,filename))
|
|
||||||
# get short filename to display next to image
|
|
||||||
filename = unicode(filename)
|
|
||||||
(prefix, shortfilename) = os.path.split(filename)
|
|
||||||
#log.info(u'shortfilename=%s' % (shortfilename))
|
|
||||||
# create a preview image
|
|
||||||
p=self.make_preview(filename)
|
|
||||||
# finally create the row
|
|
||||||
self.items.insert(row, (filename, p, shortfilename))
|
|
||||||
self.endInsertRows()
|
|
||||||
|
|
||||||
def removeRow(self, row):
|
|
||||||
self.beginRemoveRows(QtCore.QModelIndex(), row, row)
|
|
||||||
self.items.pop(row)
|
|
||||||
self.endRemoveRows()
|
|
||||||
|
|
||||||
def addRow(self, filename):
|
|
||||||
self.insertRow(len(self.items), filename)
|
|
||||||
|
|
||||||
def data(self, index, role):
|
|
||||||
row = index.row()
|
|
||||||
if row > len(self.items):
|
|
||||||
# If the last row is selected and deleted, we then get called
|
|
||||||
# with an empty row!
|
|
||||||
return QtCore.QVariant()
|
|
||||||
if role == QtCore.Qt.DisplayRole:
|
|
||||||
retval = self.items[row][2]
|
|
||||||
elif role == QtCore.Qt.DecorationRole:
|
|
||||||
retval = self.items[row][1]
|
|
||||||
elif role == QtCore.Qt.ToolTipRole:
|
|
||||||
retval = self.items[row][0]
|
|
||||||
else:
|
|
||||||
retval = QtCore.QVariant()
|
|
||||||
if type(retval) is not type(QtCore.QVariant):
|
|
||||||
return QtCore.QVariant(retval)
|
|
||||||
else:
|
|
||||||
return retval
|
|
||||||
|
|
||||||
def getFileList(self):
|
|
||||||
filelist = [item[0] for item in self.items];
|
|
||||||
return filelist
|
|
||||||
|
|
||||||
def getFilename(self, index):
|
|
||||||
row = index.row()
|
|
||||||
return self.items[row][0]
|
|
@ -70,7 +70,7 @@ class AuditTab(SettingsTab):
|
|||||||
self.AuditActive.setChecked(int(self.config.get_config(u'startup', 0)))
|
self.AuditActive.setChecked(int(self.config.get_config(u'startup', 0)))
|
||||||
|
|
||||||
def onAuditFileButtonClicked(self):
|
def onAuditFileButtonClicked(self):
|
||||||
filename = QtGui.QFileDialog.getOpenFileName(self, u'Audit File',self.AuditFileName.text())
|
filename = QtGui.QFileDialog.getSaveFileName(self, u'Audit File',self.AuditFileName.text())
|
||||||
if filename != u'':
|
if filename != u'':
|
||||||
filename = unicode(filename)
|
filename = unicode(filename)
|
||||||
self.AuditFileName.setText(filename)
|
self.AuditFileName.setText(filename)
|
||||||
|
@ -51,6 +51,3 @@ class ImagePlugin(Plugin):
|
|||||||
# Create the MediaManagerItem object
|
# Create the MediaManagerItem object
|
||||||
self.media_item = ImageMediaItem(self, self.icon, u'Images')
|
self.media_item = ImageMediaItem(self, self.icon, u'Images')
|
||||||
return self.media_item
|
return self.media_item
|
||||||
|
|
||||||
def initialise(self):
|
|
||||||
log.info(u'Plugin Initialising')
|
|
||||||
|
@ -37,28 +37,29 @@ class ImageTab(SettingsTab):
|
|||||||
self.setObjectName(u'ImageTab')
|
self.setObjectName(u'ImageTab')
|
||||||
self.ImageLayout = QtGui.QFormLayout(self)
|
self.ImageLayout = QtGui.QFormLayout(self)
|
||||||
self.ImageLayout.setObjectName(u'ImageLayout')
|
self.ImageLayout.setObjectName(u'ImageLayout')
|
||||||
self.ImageModeGroupBox = QtGui.QGroupBox(self)
|
self.ImageSettingsGroupBox = QtGui.QGroupBox(self)
|
||||||
self.ImageModeGroupBox.setObjectName(u'ImageModeGroupBox')
|
self.ImageSettingsGroupBox.setObjectName(u'ImageSettingsGroupBox')
|
||||||
self.TimeoutLayout = QtGui.QHBoxLayout(self.ImageModeGroupBox)
|
self.TimeoutLayout = QtGui.QHBoxLayout(self.ImageSettingsGroupBox)
|
||||||
self.TimeoutLayout.setSpacing(8)
|
self.TimeoutLayout.setSpacing(8)
|
||||||
self.TimeoutLayout.setMargin(0)
|
self.TimeoutLayout.setMargin(0)
|
||||||
self.TimeoutLayout.setObjectName(u'TimeoutLayout')
|
self.TimeoutLayout.setObjectName(u'TimeoutLayout')
|
||||||
self.TimeoutLabel = QtGui.QLabel(self.ImageModeGroupBox)
|
self.TimeoutLabel = QtGui.QLabel(self.ImageSettingsGroupBox)
|
||||||
self.TimeoutLabel.setObjectName(u'TimeoutLabel')
|
self.TimeoutLabel.setObjectName(u'TimeoutLabel')
|
||||||
self.TimeoutLayout.addWidget(self.TimeoutLabel)
|
self.TimeoutLayout.addWidget(self.TimeoutLabel)
|
||||||
self.TimeoutSpinBox = QtGui.QSpinBox(self.ImageModeGroupBox)
|
self.TimeoutSpinBox = QtGui.QSpinBox(self.ImageSettingsGroupBox)
|
||||||
self.TimeoutSpinBox.setMaximum(180)
|
self.TimeoutSpinBox.setMaximum(180)
|
||||||
self.TimeoutSpinBox.setObjectName(u'TimeoutSpinBox')
|
self.TimeoutSpinBox.setObjectName(u'TimeoutSpinBox')
|
||||||
self.TimeoutLayout.addWidget(self.TimeoutSpinBox)
|
self.TimeoutLayout.addWidget(self.TimeoutSpinBox)
|
||||||
self.TimeoutSpacer = QtGui.QSpacerItem(147, 20,
|
self.TimeoutSpacer = QtGui.QSpacerItem(147, 20,
|
||||||
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||||
self.TimeoutLayout.addItem(self.TimeoutSpacer)
|
self.TimeoutLayout.addItem(self.TimeoutSpacer)
|
||||||
self.ImageLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ImageModeGroupBox)
|
self.ImageLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.ImageSettingsGroupBox)
|
||||||
# Signals and slots
|
# Signals and slots
|
||||||
QtCore.QObject.connect(self.TimeoutSpinBox,
|
QtCore.QObject.connect(self.TimeoutSpinBox,
|
||||||
QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
|
QtCore.SIGNAL(u'valueChanged(int)'), self.onTimeoutSpinBoxChanged)
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
|
self.ImageSettingsGroupBox.setTitle(translate(u'ImageTab', u'Image Settings'))
|
||||||
self.TimeoutLabel.setText(translate(u'ImageTab', u'Slide Loop Delay:'))
|
self.TimeoutLabel.setText(translate(u'ImageTab', u'Slide Loop Delay:'))
|
||||||
self.TimeoutSpinBox.setSuffix(translate(u'ImageTab', u's'))
|
self.TimeoutSpinBox.setSuffix(translate(u'ImageTab', u's'))
|
||||||
|
|
||||||
|
@ -118,7 +118,3 @@ class MediaMediaItem(MediaManagerItem):
|
|||||||
item_name.setIcon(buildIcon(img))
|
item_name.setIcon(buildIcon(img))
|
||||||
item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file))
|
item_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(file))
|
||||||
self.ListView.addItem(item_name)
|
self.ListView.addItem(item_name)
|
||||||
|
|
||||||
# def onMediaAddClick(self):
|
|
||||||
# log.debug(u'Media Add Button pressed')
|
|
||||||
# pass
|
|
||||||
|
@ -27,6 +27,7 @@ from PyQt4 import QtCore, QtGui
|
|||||||
|
|
||||||
from openlp.core.lib import Plugin, MediaManagerItem, SettingsTab
|
from openlp.core.lib import Plugin, MediaManagerItem, SettingsTab
|
||||||
from openlp.plugins.media.lib import MediaTab,MediaMediaItem
|
from openlp.plugins.media.lib import MediaTab,MediaMediaItem
|
||||||
|
|
||||||
class MediaPlugin(Plugin):
|
class MediaPlugin(Plugin):
|
||||||
|
|
||||||
def __init__(self, plugin_helpers):
|
def __init__(self, plugin_helpers):
|
||||||
|
Loading…
Reference in New Issue
Block a user