diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py index d63b7f0f6..792c529ee 100644 --- a/openlp/core/lib/mediamanageritem.py +++ b/openlp/core/lib/mediamanageritem.py @@ -122,6 +122,8 @@ class MediaManagerItem(QtGui.QWidget): # self.ListViewWithDnD_class - there is a base list class with DnD assigned to it (openlp.core.lib.BaseListWithDnD()) # each plugin needs to inherit a class from this and pass that *class* (not an instance) to here # via the ListViewWithDnD_class member + # self.ServiceItemIconName - string referring to an icon file or a resource icon + # The assumption is that given that at least two plugins are of the form # "text with an icon" then all this will help # even for plugins of another sort, the setup of the right-click menu, common toolbar @@ -219,25 +221,25 @@ 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'); + assert 0, 'This fn needs to be defined by the plugin' def onPreviewClick(self): log.debug(self.PluginTextShort+u'Preview Requested') service_item = ServiceItem(self.parent) - service_item.addIcon(u':/media/media_image.png') + service_item.addIcon(self.ServiceItemIconName) self.generateSlideData(service_item) self.parent.preview_controller.addServiceItem(service_item) def onLiveClick(self): log.debug(self.PluginTextShort+u' Live Requested') service_item = ServiceItem(self.parent) - service_item.addIcon(u':/media/media_image.png') + service_item.addIcon(self.ServiceItemIconName) self.generateSlideData(service_item) self.parent.live_controller.addServiceItem(service_item) def onAddClick(self): log.debug(self.PluginTextShort+u' Add Requested') service_item = ServiceItem(self.parent) - service_item.addIcon(u':/media/media_image.png') + service_item.addIcon(self.ServiceItemIconName) self.generateSlideData(service_item) self.parent.service_manager.addServiceItem(service_item) diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py index a8898526b..f7c04da05 100644 --- a/openlp/plugins/images/lib/mediaitem.py +++ b/openlp/plugins/images/lib/mediaitem.py @@ -49,7 +49,8 @@ class ImageMediaItem(MediaManagerItem): self.OnNewFileMasks = u'Images (*.jpg *jpeg *.gif *.png *.bmp)' # this next is a class, not an instance of a class - it will # be instanced by the base MediaManagerItem - self.ListViewWithDnD_class = ImageListView + self.ListViewWithDnD_class = ImageListView + self.ServiceItemIconName = u':/media/media_image.png' MediaManagerItem.__init__(self, parent, icon, title) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 26bdd1ced..2d5bec6ea 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -26,6 +26,12 @@ from openlp.core.lib import MediaManagerItem, translate from openlp.plugins.media.lib import MediaTab from openlp.plugins.media.lib import FileListData +# from listwithpreviews import ListWithPreviews +from openlp.core.lib import MediaManagerItem, ServiceItem, translate, BaseListWithDnD +class MediaListView(BaseListWithDnD): + def __init__(self, parent=None): + self.PluginName = u'Media' + BaseListWithDnD.__init__(self, parent) class MediaMediaItem(MediaManagerItem): """ @@ -36,92 +42,29 @@ class MediaMediaItem(MediaManagerItem): log.info(u'Media Media Item loaded') def __init__(self, parent, icon, title): + self.TranslationContext = u'MediaPlugin' + self.PluginTextShort = u'Media' + self.ConfigSection = u'images' + self.OnNewPrompt = u'Select Media(s)' + self.OnNewFileMasks = u'Videos (*.avi *.mpeg *.mpg *.mp4);;Audio (*.ogg *.mp3 *.wma);;All files (*)' + # this next is a class, not an instance of a class - it will + # be instanced by the base MediaManagerItem + self.ListViewWithDnD_class = MediaListView + self.ServiceItemIconName = u':/media/media_image.png' MediaManagerItem.__init__(self, parent, icon, title) - def setupUi(self): - # Add a toolbar - self.addToolbar() - # Create buttons for the toolbar - ## New Media Button ## - self.addToolbarButton( - translate(u'MediaMediaItem',u'New Media'), - translate(u'MediaMediaItem',u'Load Media into openlp.org'), - ':/videos/video_load.png', self.onMediaNewClick, 'MediaNewItem') - ## Delete Media Button ## - self.addToolbarButton( - translate(u'MediaMediaItem',u'Delete Media'), - translate(u'MediaMediaItem',u'Delete the selected Media item'), - ':/videos/video_delete.png', self.onMediaDeleteClick, 'MediaDeleteItem') - ## Separator Line ## - self.addToolbarSeparator() - ## Preview Media Button ## - self.addToolbarButton( - translate(u'MediaMediaItem',u'Preview Media'), - translate(u'MediaMediaItem',u'Preview the selected Media item'), - ':/system/system_preview.png', self.onMediaPreviewClick, 'MediaPreviewItem') - ## Live Media Button ## - self.addToolbarButton( - translate(u'MediaMediaItem',u'Go Live'), - translate(u'MediaMediaItem',u'Send the selected Media item live'), - ':/system/system_live.png', self.onMediaLiveClick, 'MediaLiveItem') - ## Add Media Button ## - self.addToolbarButton( - translate(u'MediaMediaItem',u'Add Media To Service'), - translate(u'MediaMediaItem',u'Add the selected Media items(s) to the service'), - ':/system/system_add.png',self.onMediaAddClick, 'MediaAddItem') - ## Add the Medialist widget ## - self.MediaListView = QtGui.QListView() - self.MediaListView.setAlternatingRowColors(True) - self.MediaListData = FileListData() - self.MediaListView.setModel(self.MediaListData) - - self.PageLayout.addWidget(self.MediaListView) - - #define and add the context menu - self.MediaListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) - - self.MediaListView.addAction(self.contextMenuAction( - self.MediaListView, ':/system/system_preview.png', - translate(u'MediaMediaItem',u'&Preview Media'), self.onMediaPreviewClick)) - self.MediaListView.addAction(self.contextMenuAction( - self.MediaListView, ':/system/system_live.png', - translate(u'MediaMediaItem',u'&Show Live'), self.onMediaLiveClick)) - self.MediaListView.addAction(self.contextMenuAction( - self.MediaListView, ':/system/system_add.png', - translate(u'MediaMediaItem',u'&Add to Service'), self.onMediaAddClick)) - - def initialise(self): - list = self.parent.config.load_list(u'Media') - self.loadMediaList(list) - - def onMediaNewClick(self): - files = QtGui.QFileDialog.getOpenFileNames(None, - translate(u'MediaMediaItem', u'Select Media(s) items'), - self.parent.config.get_last_dir(), - u'Videos (*.avi *.mpeg);;Audio (*.mp3 *.ogg *.wma);;All files (*)') - if len(files) > 0: - self.loadMediaList(files) - dir, filename = os.path.split(unicode(files[0])) - self.parent.config.set_last_dir(dir) - self.parent.config.set_list(u'media', self.MediaListData.getFileList()) - - def getFileList(self): - filelist = [item[0] for item in self.MediaListView]; - return filelist - - def loadMediaList(self, list): - for files in list: - self.MediaListData.addRow(files) - - def onMediaDeleteClick(self): - indexes = self.MediaListView.selectedIndexes() + def generateSlideData(self, service_item): + indexes = self.ListView.selectedIndexes() + service_item.title = u'Media' for index in indexes: - current_row = int(index.row()) - self.MediaListData.removeRow(current_row) - self.parent.config.set_list(u'media', self.MediaListData.getFileList()) + filename = self.ListData.getFilename(index) + frame = QtGui.QImage(unicode(filename)) + (path, name) = os.path.split(filename) + service_item.add_from_image(path, name, frame) - def onMediaPreviewClick(self): + + def onPreviewClick(self): log.debug(u'Media Preview Button pressed') items = self.MediaListView.selectedIndexes() for item in items: @@ -129,7 +72,9 @@ class MediaMediaItem(MediaManagerItem): print text def onMediaLiveClick(self): + log.debug(u'Media Live Button pressed') pass - def onMediaAddClick(self): - pass \ No newline at end of file +# def onMediaAddClick(self): +# log.debug(u'Media Add Button pressed') +# pass diff --git a/openlp/plugins/media/video_render.py b/openlp/plugins/media/video_render.py index e91d7aab5..4b261ffc1 100644 --- a/openlp/plugins/media/video_render.py +++ b/openlp/plugins/media/video_render.py @@ -20,78 +20,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA import os from PyQt4 import QtCore, QtGui -# xxx this needs a try..except once we've decided what to do if it fails -from PyQt4.phonon import Phonon - -# from openlp.core.lib import Plugin, MediaManagerItem, SettingsTab -# from openlp.plugins.media.lib import MediaTab,MediaMediaItem - -"""Renders a video to some surface or other """ - -class w(QtGui.QMainWindow): - def __init__(self, parent=None): - super(QtGui.QMainWindow, self).__init__(parent) - self.resize(640,480) - self.setWindowTitle(u'simple media player') - self.show() - - -if __name__==u'__main__': - app = QtGui.QApplication([]) -# widget = QtGui.QWidget() -# widget.resize(320, 240) -# widget.setWindowTitle(u'simple') -# widget.show() -# QCore.QCoreApplication.setApplicationName(u'OpenLP') - mainwindow=w() - widget=QtGui.QWidget(mainwindow) - mainwindow.setCentralWidget(widget) - widget.setLayout(QtGui.QVBoxLayout(widget)) - videofile=u'synctest.24.muxed.avi' -# videofile=u'/extra_space/Download/coa360download56Kbps240x160.mpg' - source=Phonon.MediaSource(videofile) - - media=Phonon.MediaObject(widget) - media.setCurrentSource(source) - - video=Phonon.VideoWidget(widget) - audio=Phonon.AudioOutput(Phonon.MusicCategory) -# controller=Phonon.MediaController(media) - Phonon.createPath(media, video); - Phonon.createPath(media, audio); -# player=Phonon.VideoPlayer(Phonon.VideoCategory, widget) - slider=Phonon.SeekSlider(media, mainwindow) - widget.layout().addWidget(slider) - widget.layout().addWidget(video) - slider.show() - - video.show() - media.play() - app.exec_() - -======= -# -*- coding: utf-8 -*- -# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 -""" -OpenLP - Open Source Lyrics Projection -Copyright (c) 2008 Raoul Snyman -Portions copyright (c) 2008 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 -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 -from PyQt4 import QtCore, QtGui - # xxx this needs a try, except once we've decided what to do if it fails from PyQt4.phonon import Phonon