This commit is contained in:
Tim Bentley 2009-10-30 21:47:15 +00:00
commit b16a8cc452
38 changed files with 317 additions and 273 deletions

View File

@ -58,18 +58,13 @@ class MediaManagerItem(QtGui.QWidget):
When creating a descendant class from this class for your plugin,
the following member variables should be set.
``self.TranslationContext``
This sets the translation context of all the text in the
Media Manager item.
``self.PluginNameShort``
The shortened (usually singular) name for the plugin e.g. *'Song'*
for the Songs plugin.
``self.PluginNameVisible``
The user visible name for a plugin which should use a suitable
translation function. This should normally be
``self.trUtf8(self.PluginNameShort)``.
translation function.
``self.ConfigSection``
The section in the configuration where the items in the media
@ -117,6 +112,7 @@ class MediaManagerItem(QtGui.QWidget):
if title is not None:
self.title = title
self.Toolbar = None
self.ServiceItemIconName = None
self.PageLayout = QtGui.QVBoxLayout(self)
self.PageLayout.setSpacing(0)
self.PageLayout.setContentsMargins(4, 0, 4, 0)
@ -228,7 +224,8 @@ class MediaManagerItem(QtGui.QWidget):
if self.hasEditIcon:
self.addToolbarButton(
u'Edit %s' % self.PluginNameShort,
u'%s %s' % (self.trUtf8(u'Edit the selected'), self.PluginNameVisible),
u'%s %s' % (self.trUtf8(u'Edit the selected'),
self.PluginNameVisible),
u':%s_edit.png' % self.IconPath, self.onEditClick,
u'%sEditItem' % self.PluginNameShort)
## Delete Button ##
@ -320,7 +317,7 @@ class MediaManagerItem(QtGui.QWidget):
def onFileClick(self):
files = QtGui.QFileDialog.getOpenFileNames(
self, self.trUtf8(self.OnNewPrompt),
self, self.OnNewPrompt,
self.parent.config.get_last_dir(), self.OnNewFileMasks)
log.info(u'New files(s)%s', unicode(files))
if len(files) > 0:
@ -382,8 +379,10 @@ class MediaManagerItem(QtGui.QWidget):
Common method for generating a service item
"""
service_item = ServiceItem(self.parent)
service_item.addIcon(
u':/media/media_' + self.PluginNameShort.lower() + u'.png')
if self.ServiceItemIconName is not None:
service_item.addIcon(self.ServiceItemIconName)
else:
service_item.addIcon(self.icon)
if self.generateSlideData(service_item):
self.ListView.clearSelection()
return service_item

View File

@ -35,7 +35,7 @@ class PluginStatus(object):
Inactive = 1
Disabled = 2
class Plugin(object):
class Plugin(QtCore.QObject):
"""
Base class for openlp plugins to inherit from.
@ -91,7 +91,7 @@ class Plugin(object):
log = logging.getLogger(u'Plugin')
log.info(u'loaded')
def __init__(self, name=None, version=None, plugin_helpers=None):
def __init__(self, name, version=None, plugin_helpers=None):
"""
This is the constructor for the plugin object. This provides an easy
way for descendent plugins to populate common data. This method *must*
@ -110,10 +110,8 @@ class Plugin(object):
``plugin_helpers``
Defaults to *None*. A list of helper objects.
"""
if name is not None:
self.name = name
else:
self.name = u'Plugin'
QtCore.QObject.__init__(self)
self.name = name
if version is not None:
self.version = version
self.icon = None
@ -129,7 +127,7 @@ class Plugin(object):
self.settings = plugin_helpers[u'settings']
self.mediadock = plugin_helpers[u'toolbox']
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'%s_add_service_item'% self.name),
QtCore.SIGNAL(u'%s_add_service_item' % self.name),
self.process_add_service_event)
def check_pre_conditions(self):

View File

@ -93,7 +93,6 @@ class PluginManager(object):
log.exception(u'Failed to import module %s on path %s for reason %s',
modulename, path, e.args[0])
plugin_classes = Plugin.__subclasses__()
self.plugins = []
plugin_objects = []
for p in plugin_classes:
try:
@ -137,10 +136,6 @@ class PluginManager(object):
for plugin in self.plugins:
if plugin.status is not PluginStatus.Disabled:
plugin.media_item = plugin.get_media_manager_item()
if plugin.media_item is not None:
log.debug(u'Inserting media manager item from %s' % \
plugin.name)
mediadock.add_dock(plugin.media_item, plugin.icon, plugin.weight)
def hook_settings_tabs(self, settingsform=None):
"""

View File

@ -31,7 +31,7 @@ class SettingsTab(QtGui.QWidget):
SettingsTab is a helper widget for plugins to define Tabs for the settings
dialog.
"""
def __init__(self, title=None, section=None):
def __init__(self, title, section=None):
"""
Constructor to create the Settings tab item.

View File

@ -31,7 +31,7 @@ class AlertsTab(SettingsTab):
AlertsTab is the alerts settings tab in the settings dialog.
"""
def __init__(self):
SettingsTab.__init__(self, u'Alerts', u'Alerts')
SettingsTab.__init__(self, u'Alerts')
self.font_color = '#ffffff'
self.bg_color = '#660000'

View File

@ -480,11 +480,11 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
def paintUi(self, theme):
self.stateChanging(theme)
self.ThemeNameEdit.setText(self.theme.theme_name)
# Background Tab
if self.theme.background_mode == u'opaque':
self.BackgroundComboBox.setCurrentIndex(0)
else:
self.BackgroundComboBox.setCurrentIndex(1)
self.ImageLineEdit.setText(u'')
if theme.background_type == u'solid':
self.BackgroundTypeComboBox.setCurrentIndex(0)
@ -493,14 +493,15 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
else:
self.BackgroundTypeComboBox.setCurrentIndex(2)
self.ImageLineEdit.setText(self.theme.background_filename)
if self.theme.background_direction == u'horizontal':
self.GradientComboBox.setCurrentIndex(0)
elif self.theme.background_direction == u'vertical':
self.GradientComboBox.setCurrentIndex(1)
else:
self.GradientComboBox.setCurrentIndex(2)
# Font Main Tab
self.FontMainComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_main_name))
self.FontMainSizeSpinBox.setValue(int(self.theme.font_main_proportion))
if not self.theme.font_main_italics and \
self.theme.font_main_weight == u'Normal':
@ -518,6 +519,9 @@ class AmendThemeForm(QtGui.QDialog, Ui_AmendThemeDialog):
self.FontMainYSpinBox.setValue(int(self.theme.font_main_y))
self.FontMainWidthSpinBox.setValue(int(self.theme.font_main_width))
self.FontMainHeightSpinBox.setValue(int(self.theme.font_main_height))
# Font Footer Tab
self.FontFooterComboBox.setCurrentFont(
QtGui.QFont(self.theme.font_footer_name))
self.FontFooterSizeSpinBox.setValue(
int(self.theme.font_footer_proportion))
if not self.theme.font_footer_italics and \

View File

@ -32,7 +32,7 @@ class GeneralTab(SettingsTab):
"""
def __init__(self, screen_list):
self.screen_list = screen_list
SettingsTab.__init__(self, u'General', u'General')
SettingsTab.__init__(self, u'General')
def setupUi(self):
self.setObjectName(u'GeneralTab')

View File

@ -597,9 +597,10 @@ class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
Show the Settings dialog
"""
self.settingsForm.exec_()
screen_number = self.getMonitorNumber()
self.RenderManager.update_display(screen_number)
self.mainDisplay.setup(screen_number)
updated_display = self.getMonitorNumber()
if updated_display != self.RenderManager.current_display:
self.RenderManager.update_display(updated_display)
self.mainDisplay.setup(updated_display)
def closeEvent(self, event):
"""

View File

@ -33,8 +33,7 @@ class MediaDockManager(object):
def add_dock(self, media_item, icon, weight):
log.info(u'Adding %s dock' % media_item.title)
id = self.media_dock.addItem(
media_item, icon, media_item.title)
self.media_dock.addItem(media_item, icon, media_item.title)
def insert_dock(self, media_item, icon, weight):
"""
@ -56,6 +55,6 @@ class MediaDockManager(object):
log.debug(u'remove %s dock' % name)
for dock_index in range(0, self.media_dock.count()):
if self.media_dock.widget(dock_index) is not None:
if self.media_dock.widget(dock_index).ConfigSection == name.lower():
if self.media_dock.widget(dock_index).ConfigSection == name:
self.media_dock.widget(dock_index).hide()
self.media_dock.removeItem(dock_index)

View File

@ -37,6 +37,7 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
QtGui.QDialog.__init__(self, parent)
self.parent = parent
self.activePlugin = None
self.programaticChange = False
self.setupUi(self)
self.load()
self._clearDetails()
@ -84,6 +85,7 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
self.VersionNumberLabel.setText(self.activePlugin.version)
self.AboutTextBrowser.setHtml(self.activePlugin.about())
if self.activePlugin.can_be_disabled():
self.programaticChange = True
self.StatusComboBox.setCurrentIndex(int(self.activePlugin.status))
self.StatusComboBox.setEnabled(True)
else:
@ -105,6 +107,9 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
self._clearDetails()
def onStatusComboBoxChanged(self, status):
if self.programaticChange is True:
self.programaticChange = False
return
self.activePlugin.toggle_status(status)
if status == PluginStatus.Active:
self.activePlugin.initialise()
@ -119,4 +124,3 @@ class PluginForm(QtGui.QDialog, Ui_PluginViewDialog):
status_text = 'Disabled'
self.PluginListWidget.currentItem().setText(
u'%s (%s)' % (self.activePlugin.name, status_text))

View File

@ -32,7 +32,7 @@ class ThemesTab(SettingsTab):
"""
def __init__(self, parent):
self.parent = parent
SettingsTab.__init__(self, u'Themes', u'Themes')
SettingsTab.__init__(self, u'Themes')
def setupUi(self):
self.setObjectName(u'ThemesTab')

View File

@ -35,10 +35,8 @@ class BiblePlugin(Plugin):
log.info(u'Bible Plugin loaded')
def __init__(self, plugin_helpers):
# Call the parent constructor
Plugin.__init__(self, u'Bibles', u'1.9.0', plugin_helpers)
self.weight = -9
# Create the plugin icon
self.icon = buildIcon(u':/media/media_bible.png')
#Register the bible Manager
self.biblemanager = None
@ -63,11 +61,11 @@ class BiblePlugin(Plugin):
self.ExportBibleItem.setVisible(False)
def get_settings_tab(self):
return BiblesTab()
return BiblesTab(self.name)
def get_media_manager_item(self):
# Create the BibleManagerItem object
return BibleMediaItem(self, self.icon, u'Bibles')
return BibleMediaItem(self, self.icon, self.name)
def add_import_menu_item(self, import_menu):
self.ImportBibleItem = QtGui.QAction(import_menu)
@ -91,8 +89,7 @@ class BiblePlugin(Plugin):
self.media_item.onNewClick()
def about(self):
about_text = u'<strong>Bible Plugin</strong><br />This plugin allows '\
u'bible verse from different sources to be displayed on the '\
u'screen during the service.<br /><br /><strong>This is a core '\
u'plugin and cannot be made inactive</strong>'
about_text = self.trUtf8(u'<strong>Bible Plugin</strong><br />This '
u'plugin allows bible verses from different sources to be '
u'displayed on the screen during the service.')
return about_text

View File

@ -37,11 +37,11 @@ class BiblesTab(SettingsTab):
log = logging.getLogger(u'BibleTab')
log.info(u'Bible Tab loaded')
def __init__(self):
def __init__(self, title, section=None):
self.paragraph_style = True
self.show_new_chapters = False
self.display_style = 0
SettingsTab.__init__(self, u'Bibles', u'Bibles')
SettingsTab.__init__(self, title, section)
def setupUi(self):
self.setObjectName(u'BiblesTab')

View File

@ -283,7 +283,8 @@ class BibleManager(object):
count = self.bible_db_cache[bible].get_max_bible_book_verses(
book, chapter)
if count == 0:
text = self.get_verse_text(bible, book, chapter, chapter, 1, 1)
# Make sure the first chapter has been downloaded
self.get_verse_text(bible, book, chapter, chapter, 1, 1)
count = self.bible_db_cache[bible].get_max_bible_book_verses(
book, chapter)
return count

View File

@ -46,12 +46,10 @@ class BibleMediaItem(MediaManagerItem):
log.info(u'Bible Media Item loaded')
def __init__(self, parent, icon, title):
self.TranslationContext = u'BiblePlugin'
self.PluginNameShort = u'Bible'
self.ConfigSection = u'bibles'
self.ConfigSection = title
self.IconPath = u'songs/song'
self.ListViewWithDnD_class = BibleListView
self.ServiceItemIconName = u':/media/bible_image.png'
self.servicePath = None
MediaManagerItem.__init__(self, parent, icon, title)
# place to store the search results
@ -60,7 +58,7 @@ class BibleMediaItem(MediaManagerItem):
QtCore.SIGNAL(u'openlpreloadbibles'), self.reloadBibles)
def initPluginNameVisible(self):
self.PluginNameVisible = self.trUtf8(self.PluginNameShort)
self.PluginNameVisible = self.trUtf8(u'Bible')
def requiredIcons(self):
MediaManagerItem.requiredIcons(self)
@ -89,14 +87,16 @@ class BibleMediaItem(MediaManagerItem):
self.QuickVersionLabel.setObjectName(u'QuickVersionLabel')
self.QuickLayout.addWidget(self.QuickVersionLabel, 0, 0, 1, 1)
self.QuickVersionComboBox = QtGui.QComboBox(self.QuickTab)
self.QuickVersionComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
self.QuickVersionComboBox.setSizeAdjustPolicy(
QtGui.QComboBox.AdjustToMinimumContentsLength)
self.QuickVersionComboBox.setObjectName(u'VersionComboBox')
self.QuickLayout.addWidget(self.QuickVersionComboBox, 0, 1, 1, 2)
self.QuickSecondVersionLabel = QtGui.QLabel(self.QuickTab)
self.QuickSecondVersionLabel.setObjectName(u'QuickSecondVersionLabel')
self.QuickLayout.addWidget(self.QuickSecondVersionLabel, 1, 0, 1, 1)
self.QuickSecondBibleComboBox = QtGui.QComboBox(self.QuickTab)
self.QuickSecondBibleComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
self.QuickSecondBibleComboBox.setSizeAdjustPolicy(
QtGui.QComboBox.AdjustToMinimumContentsLength)
self.QuickSecondBibleComboBox.setObjectName(u'SecondBible')
self.QuickLayout.addWidget(self.QuickSecondBibleComboBox, 1, 1, 1, 2)
self.QuickSearchLabel = QtGui.QLabel(self.QuickTab)
@ -147,16 +147,20 @@ class BibleMediaItem(MediaManagerItem):
self.AdvancedVersionLabel.setObjectName(u'AdvancedVersionLabel')
self.AdvancedLayout.addWidget(self.AdvancedVersionLabel, 0, 0, 1, 1)
self.AdvancedVersionComboBox = QtGui.QComboBox(self.AdvancedTab)
self.AdvancedVersionComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
self.AdvancedVersionComboBox.setSizeAdjustPolicy(
QtGui.QComboBox.AdjustToMinimumContentsLength)
self.AdvancedVersionComboBox.setObjectName(u'AdvancedVersionComboBox')
self.AdvancedLayout.addWidget(self.AdvancedVersionComboBox, 0, 1, 1, 2)
self.AdvancedSecondBibleLabel = QtGui.QLabel(self.AdvancedTab)
self.AdvancedSecondBibleLabel.setObjectName(u'AdvancedSecondBibleLabel')
self.AdvancedLayout.addWidget(self.AdvancedSecondBibleLabel, 1, 0, 1, 1)
self.AdvancedSecondBibleComboBox = QtGui.QComboBox(self.AdvancedTab)
self.AdvancedSecondBibleComboBox.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToMinimumContentsLength)
self.AdvancedSecondBibleComboBox.setObjectName(u'AdvancedSecondBibleComboBox')
self.AdvancedLayout.addWidget(self.AdvancedSecondBibleComboBox, 1, 1, 1, 2)
self.AdvancedSecondBibleComboBox.setSizeAdjustPolicy(
QtGui.QComboBox.AdjustToMinimumContentsLength)
self.AdvancedSecondBibleComboBox.setObjectName(
u'AdvancedSecondBibleComboBox')
self.AdvancedLayout.addWidget(
self.AdvancedSecondBibleComboBox, 1, 1, 1, 2)
self.AdvancedBookLabel = QtGui.QLabel(self.AdvancedTab)
self.AdvancedBookLabel.setObjectName(u'AdvancedBookLabel')
self.AdvancedLayout.addWidget(self.AdvancedBookLabel, 2, 0, 1, 1)
@ -198,14 +202,16 @@ class BibleMediaItem(MediaManagerItem):
self.AdvancedSearchButtonLayout = QtGui.QHBoxLayout()
self.AdvancedSearchButtonLayout.setMargin(0)
self.AdvancedSearchButtonLayout.setSpacing(0)
self.AdvancedSearchButtonLayout.setObjectName(u'AdvancedSearchButtonLayout')
self.AdvancedSearchButtonLayout.setObjectName(
u'AdvancedSearchButtonLayout')
self.AdvancedSearchButtonSpacer = QtGui.QSpacerItem(40, 20,
QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.AdvancedSearchButtonLayout.addItem(self.AdvancedSearchButtonSpacer)
self.AdvancedSearchButton = QtGui.QPushButton(self.AdvancedTab)
self.AdvancedSearchButton.setObjectName(u'AdvancedSearchButton')
self.AdvancedSearchButtonLayout.addWidget(self.AdvancedSearchButton)
self.AdvancedLayout.addLayout(self.AdvancedSearchButtonLayout, 7, 0, 1, 3)
self.AdvancedLayout.addLayout(
self.AdvancedSearchButtonLayout, 7, 0, 1, 3)
self.AdvancedMessage = QtGui.QLabel(self.AdvancedTab)
self.AdvancedMessage.setObjectName(u'AdvancedMessage')
self.AdvancedLayout.addWidget(self.AdvancedMessage, 8, 0, 1, 3)
@ -475,10 +481,12 @@ class BibleMediaItem(MediaManagerItem):
for book in book_data:
row = self.AdvancedBookComboBox.count()
self.AdvancedBookComboBox.addItem(book[u'book'])
self.AdvancedBookComboBox.setItemData(row, QtCore.QVariant(book[u'total']))
self.AdvancedBookComboBox.setItemData(
row, QtCore.QVariant(book[u'total']))
if first:
first = False
self.initialiseChapterVerse(bible, book[u'book'], book[u'total'])
self.initialiseChapterVerse(
bible, book[u'book'], book[u'total'])
def initialiseChapterVerse(self, bible, book, chapters):
log.debug(u'initialiseChapterVerse %s, %s', bible, book)

View File

@ -1,24 +1,26 @@
# -*- 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 - 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
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
"""
###############################################################################
# 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 #
###############################################################################
from sqlalchemy import Column, Table, MetaData, ForeignKey, types, \
create_engine

View File

@ -44,17 +44,15 @@ class CustomPlugin(Plugin):
log.info(u'Custom Plugin loaded')
def __init__(self, plugin_helpers):
# Call the parent constructor
Plugin.__init__(self, u'Custom', u'1.9.0', plugin_helpers)
self.weight = -5
self.custommanager = CustomManager(self.config)
self.edit_custom_form = EditCustomForm(self.custommanager)
# Create the plugin icon
self.icon = buildIcon(u':/media/media_custom.png')
def get_media_manager_item(self):
# Create the CustomManagerItem object
return CustomMediaItem(self, self.icon, u'Custom')
return CustomMediaItem(self, self.icon, self.name)
def can_be_disabled(self):
return True
@ -69,4 +67,8 @@ class CustomPlugin(Plugin):
self.remove_toolbox_item()
def about(self):
return u'<b>Custom Plugin</b> <br>This plugin allows slides to be displayed on the screen in the same way songs are. The difference between this plugin and songs is this plugin provides greater freedom.<br>'
about_text = self.trUtf8(u'<b>Custom Plugin</b><br>This plugin '
u'allows slides to be displayed on the screen in the same way '
u'songs are. This plugin provides greater freedom over the '
u'songs plugin.<br>')
return about_text

View File

@ -42,17 +42,14 @@ class CustomMediaItem(MediaManagerItem):
log.info(u'Custom Media Item loaded')
def __init__(self, parent, icon, title):
self.TranslationContext = u'CustomPlugin'
self.PluginNameShort = u'Custom'
self.ConfigSection = u'custom'
self.ConfigSection = title
self.IconPath = u'custom/custom'
# this next is a class, not an instance of a class - it will
# be instanced by the base MediaManagerItem
self.ListViewWithDnD_class = CustomListView
self.ServiceItemIconName = u':/custom/custom_image.png'
self.servicePath = None
MediaManagerItem.__init__(self, parent, icon, title)
self.parent = parent
self.fromServiceManager = -1
def addEndHeaderBar(self):
@ -64,7 +61,7 @@ class CustomMediaItem(MediaManagerItem):
QtCore.SIGNAL(u'load_custom_list'), self.initialise)
def initPluginNameVisible(self):
self.PluginNameVisible = self.trUtf8(self.PluginNameShort)
self.PluginNameVisible = self.trUtf8(u'Custom')
def requiredIcons(self):
MediaManagerItem.requiredIcons(self)

View File

@ -33,10 +33,8 @@ class ImagePlugin(Plugin):
log.info(u'Image Plugin loaded')
def __init__(self, plugin_helpers):
# Call the parent constructor
Plugin.__init__(self, u'Images', u'1.9.0', plugin_helpers)
self.weight = -7
# Create the plugin icon
self.icon = buildIcon(u':/media/media_image.png')
def can_be_disabled(self):
@ -52,11 +50,18 @@ class ImagePlugin(Plugin):
self.remove_toolbox_item()
def get_settings_tab(self):
return ImageTab()
return ImageTab(self.name)
def get_media_manager_item(self):
# Create the MediaManagerItem object
return ImageMediaItem(self, self.icon, u'Images')
return ImageMediaItem(self, self.icon, self.name)
def about(self):
return u'<b>Image Plugin</b><br>Allows images of all types to be displayed. If a number of images are selected together and presented on the live controller it is possible to turn them into a timed loop.<br> From the plugin if the <i>Override background</i> is chosen and an image is selected any somgs which are rendered will use the selected image from the background instead of the one provied by the theme.<br>'
about_text = self.trUtf8(u'<b>Image Plugin</b><br>Allows images of '
u'all types to be displayed. If a number of images are selected '
u'together and presented on the live controller it is possible '
u'to turn them into a timed loop.<br>From the plugin if the '
u'<i>Override background</i> is chosen and an image is selected '
u'any somgs which are rendered will use the selected image from '
u'the background instead of the one provied by the theme.<br>')
return about_text

View File

@ -30,8 +30,8 @@ class ImageTab(SettingsTab):
"""
ImageTab is the Image settings tab in the settings dialog.
"""
def __init__(self):
SettingsTab.__init__(self, u'Images', u'Images')
def __init__(self, title, section=None):
SettingsTab.__init__(self, title, section)
def setupUi(self):
self.setObjectName(u'ImageTab')
@ -42,7 +42,7 @@ class ImageTab(SettingsTab):
self.ImageSettingsGroupBox.setObjectName(u'ImageSettingsGroupBox')
self.TimeoutLayout = QtGui.QHBoxLayout(self.ImageSettingsGroupBox)
self.TimeoutLayout.setSpacing(8)
self.TimeoutLayout.setMargin(0)
self.TimeoutLayout.setMargin(8)
self.TimeoutLayout.setObjectName(u'TimeoutLayout')
self.TimeoutLabel = QtGui.QLabel(self.ImageSettingsGroupBox)
self.TimeoutLabel.setObjectName(u'TimeoutLabel')

View File

@ -44,20 +44,18 @@ class ImageMediaItem(MediaManagerItem):
log.info(u'Image Media Item loaded')
def __init__(self, parent, icon, title):
self.TranslationContext = u'ImagePlugin'
self.PluginNameShort = u'Image'
self.ConfigSection = u'images'
self.ConfigSection = title
self.IconPath = u'images/image'
# this next is a class, not an instance of a class - it will
# be instanced by the base MediaManagerItem
self.ListViewWithDnD_class = ImageListView
self.ServiceItemIconName = u':/media/media_image.png'
self.servicePath = None
MediaManagerItem.__init__(self, parent, icon, title)
self.overrideActive = False
def initPluginNameVisible(self):
self.PluginNameVisible = self.trUtf8(self.PluginNameShort)
self.PluginNameVisible = self.trUtf8(u'Image')
def retranslateUi(self):
self.OnNewPrompt = self.trUtf8(u'Select Image(s)')

View File

@ -43,22 +43,22 @@ class MediaMediaItem(MediaManagerItem):
log.info(u'Media Media Item loaded')
def __init__(self, parent, icon, title):
self.TranslationContext = u'MediaPlugin'
self.PluginNameShort = u'Media'
self.IconPath = u'images/image'
self.ConfigSection = u'media'
self.OnNewPrompt = u'Select Media(s)'
self.ConfigSection = title
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'
self.PreviewFunction = self.video_get_preview
MediaManagerItem.__init__(self, parent, icon, title)
def initPluginNameVisible(self):
self.PluginNameVisible = self.trUtf8(self.PluginNameShort)
self.PluginNameVisible = self.trUtf8(u'Media')
def reTranslateUi(self):
self.OnNewPrompt = self.trUtf8(u'Select Media')
def requiredIcons(self):
MediaManagerItem.requiredIcons(self)
@ -67,13 +67,10 @@ class MediaMediaItem(MediaManagerItem):
self.hasEditIcon = False
def video_get_preview(self, filename):
#
# For now cross platform is an icon. Phonon does not support
# individual frame access (yet?) and GStreamer is not available
# on Windows
#
image = QtGui.QPixmap(u':/media/media_video.png').toImage()
return image
return QtGui.QPixmap(u':/media/media_video.png').toImage()
def generateSlideData(self, service_item):
indexes = self.ListView.selectedIndexes()

View File

@ -30,8 +30,8 @@ class MediaTab(SettingsTab):
"""
mediaTab is the media settings tab in the settings dialog.
"""
def __init__(self):
SettingsTab.__init__(self, u'Media', u'Media')
def __init__(self, title, section=None):
SettingsTab.__init__(self, title, section)
def setupUi(self):
self.setObjectName(u'MediaTab')

View File

@ -33,16 +33,14 @@ class MediaPlugin(Plugin):
log.info(u'Media Plugin loaded')
def __init__(self, plugin_helpers):
# Call the parent constructor
Plugin.__init__(self, u'Media', u'1.9.0', plugin_helpers)
self.weight = -6
# Create the plugin icon
self.icon = buildIcon(u':/media/media_video.png')
# passed with drag and drop messages
self.dnd_id = u'Media'
def get_settings_tab(self):
return MediaTab()
return MediaTab(self.name)
def can_be_disabled(self):
return True
@ -58,7 +56,9 @@ class MediaPlugin(Plugin):
def get_media_manager_item(self):
# Create the MediaManagerItem object
return MediaMediaItem(self, self.icon, u'Media')
return MediaMediaItem(self, self.icon, self.name)
def about(self):
return u'<b>Media Plugin</b> <br> One day this may provide access to video and audio clips'
about_text = self.trUtf8(u'<b>Media Plugin</b><br>This plugin '
u'allows the playing of audio and video media')
return about_text

View File

@ -1,22 +1,27 @@
# -*- 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-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
Foundation; version 2 of the License.
###############################################################################
# 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 #
###############################################################################
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
"""
# OOo API documentation:
# http://api.openoffice.org/docs/common/ref/com/sun/star/presentation/XSlideShowController.html
# http://docs.go-oo.org/sd/html/classsd_1_1SlideShow.html

View File

@ -48,11 +48,9 @@ class PresentationMediaItem(MediaManagerItem):
def __init__(self, parent, icon, title, controllers):
self.controllers = controllers
self.TranslationContext = u'PresentationPlugin'
self.PluginNameShort = u'Presentation'
self.ConfigSection = u'presentations'
self.ConfigSection = title
self.IconPath = u'presentations/presentation'
self.OnNewPrompt = u'Select Presentation(s)'
self.OnNewFileMasks = u'Presentations (*.ppt *.pps *.odp)'
# this next is a class, not an instance of a class - it will
# be instanced by the base MediaManagerItem
@ -61,7 +59,10 @@ class PresentationMediaItem(MediaManagerItem):
self.message_listener = MessageListener(controllers)
def initPluginNameVisible(self):
self.PluginNameVisible = self.trUtf8(self.PluginNameShort)
self.PluginNameVisible = self.trUtf8(u'Presentation')
def reTranslateUi(self):
self.OnNewPrompt = self.trUtf8(u'Select Presentation(s)')
def requiredIcons(self):
MediaManagerItem.requiredIcons(self)
@ -110,8 +111,8 @@ class PresentationMediaItem(MediaManagerItem):
(path, filename) = os.path.split(unicode(file))
if titles.count(filename) > 0:
QtGui.QMessageBox.critical(
self, self.trUtf8(u'File exists'),
self.trUtf8(u'A presentation with that filename already exists.'),
self, self.trUtf8(u'File exists'), self.trUtf8(
u'A presentation with that filename already exists.'),
QtGui.QMessageBox.Ok)
else:
item_name = QtGui.QListWidgetItem(filename)

View File

@ -1,22 +1,27 @@
# -*- 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-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
Foundation; version 2 of the License.
###############################################################################
# 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 #
###############################################################################
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 logging
import os

View File

@ -1,22 +1,26 @@
# -*- 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-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
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
"""
###############################################################################
# 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 logging
import os

View File

@ -30,9 +30,9 @@ class PresentationTab(SettingsTab):
"""
PresentationsTab is the Presentations settings tab in the settings dialog.
"""
def __init__(self, controllers):
def __init__(self, title, controllers, section=None):
self.controllers = controllers
SettingsTab.__init__(self, u'Presentations', u'Presentations')
SettingsTab.__init__(self, title, section)
def setupUi(self):
self.setObjectName(u'PresentationTab')

View File

@ -25,9 +25,7 @@
import os
import logging
from PyQt4 import QtGui
from openlp.core.lib import Plugin
from openlp.core.lib import Plugin, buildIcon
from openlp.plugins.presentations.lib import *
class PresentationPlugin(Plugin):
@ -36,21 +34,17 @@ class PresentationPlugin(Plugin):
log = logging.getLogger(u'PresentationPlugin')
def __init__(self, plugin_helpers):
# Call the parent constructor
log.debug(u'Initialised')
self.controllers = {}
Plugin.__init__(self, u'Presentations', u'1.9.0', plugin_helpers)
self.weight = -8
# Create the plugin icon
self.icon = QtGui.QIcon()
self.icon.addPixmap(QtGui.QPixmap(u':/media/media_presentation.png'),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.icon = buildIcon(u':/media/media_presentation.png')
def get_settings_tab(self):
"""
Create the settings Tab
"""
return PresentationTab(self.controllers)
return PresentationTab(self.name, self.controllers)
def can_be_disabled(self):
return True
@ -74,7 +68,7 @@ class PresentationPlugin(Plugin):
Create the Media Manager List
"""
return PresentationMediaItem(
self, self.icon, u'Presentations', self.controllers)
self, self.icon, self.name, self.controllers)
def registerControllers(self, controller):
self.controllers[controller.name] = controller
@ -110,4 +104,8 @@ class PresentationPlugin(Plugin):
return False
def about(self):
return u'<b>Presentation Plugin</b> <br> Delivers the ability to show presentations using a number of different programs. The choice of available presentaion programs is available in a drop down.'
about_text = self.trUtf8(u'<b>Presentation Plugin</b> <br> Delivers '
u'the ability to show presentations using a number of different '
u'programs. The choice of available presentation programs is '
u'available to the user in a drop down box.')
return about_text

View File

@ -1,21 +1,25 @@
# -*- 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-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
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
"""
###############################################################################
# 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 #
###############################################################################
from remotetab import RemoteTab

View File

@ -1,22 +1,26 @@
# -*- 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-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
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
"""
###############################################################################
# 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 #
###############################################################################
from PyQt4 import QtGui
@ -26,8 +30,8 @@ class RemoteTab(SettingsTab):
"""
RemoteTab is the Remotes settings tab in the settings dialog.
"""
def __init__(self):
SettingsTab.__init__(self, u'Remotes', u'Remotes')
def __init__(self, title, section=None):
SettingsTab.__init__(self, title, section)
def setupUi(self):
self.setObjectName(u'RemoteTab')

View File

@ -1,23 +1,28 @@
#!/usr/bin/env python
# -*- 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-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
Foundation; version 2 of the License.
###############################################################################
# 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 #
###############################################################################
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 socket
import sys
from optparse import OptionParser

View File

@ -1,22 +1,27 @@
# -*- 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-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
Foundation; version 2 of the License.
###############################################################################
# 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 #
###############################################################################
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 logging
from PyQt4 import QtNetwork, QtCore
@ -31,7 +36,6 @@ class RemotesPlugin(Plugin):
log.info(u'Remote Plugin loaded')
def __init__(self, plugin_helpers):
# Call the parent constructor
Plugin.__init__(self, u'Remotes', u'1.9.0', plugin_helpers)
self.weight = -1
self.server = None
@ -54,14 +58,11 @@ class RemotesPlugin(Plugin):
if self.server is not None:
self.server.close()
def about(self):
return u'<b>Remote Plugin</b> <br>This plugin provides the ability to send messages to a running version of openlp on a different computer.<br> The Primary use for this would be to send alerts from a creche'
def get_settings_tab(self):
"""
Create the settings Tab
"""
return RemoteTab()
return RemoteTab(self.name)
def readData(self):
log.info(u'Remoted data has arrived')
@ -78,3 +79,10 @@ class RemotesPlugin(Plugin):
Receiver().send_message(u'alert_text', unicode(datagram[pos + 1:]))
if event == u'next_slide':
Receiver().send_message(u'live_slide_next')
def about(self):
about_text = self.trUtf8(u'<b>Remote Plugin</b><br>This plugin '
u'provides the ability to send messages to a running version of '
u'openlp on a different computer.<br>The Primary use for this '
u'would be to send alerts from a creche')
return about_text

View File

@ -44,12 +44,10 @@ class SongMediaItem(MediaManagerItem):
log.info(u'Song Media Item loaded')
def __init__(self, parent, icon, title):
self.TranslationContext = u'SongPlugin'
self.PluginNameShort = u'Song'
self.ConfigSection = u'songs'
self.ConfigSection = title
self.IconPath = u'songs/song'
self.ListViewWithDnD_class = SongListView
self.ServiceItemIconName = u':/media/song_image.png'
self.servicePath = None
MediaManagerItem.__init__(self, parent, icon, title)
self.edit_song_form = EditSongForm(self.parent.songmanager, self)
@ -63,7 +61,7 @@ class SongMediaItem(MediaManagerItem):
self.fromServiceManager = -1
def initPluginNameVisible(self):
self.PluginNameVisible = self.trUtf8(self.PluginNameShort)
self.PluginNameVisible = self.trUtf8(u'Song')
def requiredIcons(self):
MediaManagerItem.requiredIcons(self)
@ -319,5 +317,7 @@ class SongMediaItem(MediaManagerItem):
raw_footer.append(unicode(
self.trUtf8(u'CCL Licence: ') + ccl))
service_item.raw_footer = raw_footer
service_item.audit = [song.title, author_audit, song.copyright, song.ccli_number]
service_item.audit = [
song.title, author_audit, song.copyright, song.ccli_number
]
return True

View File

@ -30,8 +30,8 @@ class SongsTab(SettingsTab):
"""
SongsTab is the Songs settings tab in the settings dialog.
"""
def __init__(self):
SettingsTab.__init__(self, u'Songs', u'Songs')
def __init__(self, title, section=None):
SettingsTab.__init__(self, title, section)
def setupUi(self):
self.setObjectName(u'SongsTab')
@ -61,8 +61,10 @@ class SongsTab(SettingsTab):
def retranslateUi(self):
self.SongsModeGroupBox.setTitle(self.trUtf8(u'Songs Mode'))
self.SearchAsTypeCheckBox.setText(self.trUtf8(u'Enable search as you type:'))
self.SongBarActiveCheckBox.setText(self.trUtf8(u'Display Verses on Live Tool bar:'))
self.SearchAsTypeCheckBox.setText(
self.trUtf8(u'Enable search as you type:'))
self.SongBarActiveCheckBox.setText(
self.trUtf8(u'Display Verses on Live Tool bar:'))
def onSearchAsTypeCheckBoxChanged(self, check_state):
self.song_search = False

View File

@ -48,7 +48,6 @@ class SongsPlugin(Plugin):
"""
Create and set up the Songs plugin.
"""
# Call the parent constructor
Plugin.__init__(self, u'Songs', u'1.9.0', plugin_helpers)
self.weight = -10
self.songmanager = SongManager(self.config)
@ -56,14 +55,13 @@ class SongsPlugin(Plugin):
self.opensong_import_form = OpenSongImportForm()
self.openlp_export_form = OpenLPExportForm()
self.opensong_export_form = OpenSongExportForm()
# Create the plugin icon
self.icon = buildIcon(u':/media/media_song.png')
def can_be_disabled(self):
return True
def get_settings_tab(self):
return SongsTab()
return SongsTab(self.name)
def initialise(self):
log.info(u'Songs Initialising')
@ -87,7 +85,7 @@ class SongsPlugin(Plugin):
Create the MediaManagerItem object, which is displaed in the
Media Manager.
"""
return SongMediaItem(self, self.icon, 'Songs')
return SongMediaItem(self, self.icon, self.name)
def add_import_menu_item(self, import_menu):
"""
@ -180,4 +178,6 @@ class SongsPlugin(Plugin):
self.opensong_export_form.show()
def about(self):
return u'<b>Song Plugin</b> <br>This plugin allows Songs to be managed and displayed.<br>'
about_text = self.trUtf8(u'<b>Song Plugin</b> <br>This plugin allows '
u'Songs to be managed and displayed.<br>')
return about_text

View File

@ -38,10 +38,8 @@ class SongUsagePlugin(Plugin):
log.info(u'SongUsage Plugin loaded')
def __init__(self, plugin_helpers):
# Call the parent constructor
Plugin.__init__(self, u'SongUsage', u'1.9.0', plugin_helpers)
self.weight = -4
# Create the plugin icon
self.icon = buildIcon(u':/media/media_image.png')
self.songusagemanager = None
self.songusageActive = False
@ -63,17 +61,19 @@ class SongUsagePlugin(Plugin):
self.SongUsageMenu = QtGui.QMenu(tools_menu)
self.SongUsageMenu.setObjectName(u'SongUsageMenu')
self.SongUsageMenu.setTitle(tools_menu.trUtf8(u'&Song Usage'))
#SongUsage Delete
#SongUsage Delete
self.SongUsageDelete = QtGui.QAction(tools_menu)
self.SongUsageDelete.setText(tools_menu.trUtf8(u'&Delete recorded data'))
self.SongUsageDelete.setText(
tools_menu.trUtf8(u'&Delete recorded data'))
self.SongUsageDelete.setStatusTip(
tools_menu.trUtf8(u'Delete sing usage to sepecified date'))
tools_menu.trUtf8(u'Delete song usage to specified date'))
self.SongUsageDelete.setObjectName(u'SongUsageDelete')
#SongUsage Report
self.SongUsageReport = QtGui.QAction(tools_menu)
self.SongUsageReport.setText(tools_menu.trUtf8(u'&Extract recoreded data'))
self.SongUsageReport.setText(
tools_menu.trUtf8(u'&Extract recorded data'))
self.SongUsageReport.setStatusTip(
tools_menu.trUtf8(u'Generate Extracts on Song Usage'))
tools_menu.trUtf8(u'Generate report on Song Usage'))
self.SongUsageReport.setObjectName(u'SongUsageReport')
#SongUsage activation
SongUsageIcon = buildIcon(u':/tools/tools_alert.png')
@ -153,6 +153,7 @@ class SongUsagePlugin(Plugin):
self.SongUsagedetailform.exec_()
def about(self):
about_text = u'<b>SongUsage Plugin</b><br />This plugin records the use '\
u'of songs and when they have been used during a live service'
about_text = self.trUtf8(u'<b>SongUsage Plugin</b><br>This plugin '
u'records the use of songs and when they have been used during '
u'a live service')
return about_text