diff --git a/openlp/core/lib/mediamanageritem.py b/openlp/core/lib/mediamanageritem.py
index 8ccc51919..93f24a01f 100644
--- a/openlp/core/lib/mediamanageritem.py
+++ b/openlp/core/lib/mediamanageritem.py
@@ -173,6 +173,8 @@ class MediaManagerItem(QtGui.QWidget):
"""
# Add a toolbar
self.addToolbar()
+ #Allow the plugin to define it's own header
+ self.addHeaderBar1()
# Create buttons for the toolbar
## File Button ##
if self.hasFileIcon:
@@ -185,13 +187,13 @@ class MediaManagerItem(QtGui.QWidget):
self.addToolbarButton(
translate(self.TranslationContext, u'New '+self.PluginTextShort),
translate(self.TranslationContext, u'Add a new '+self.PluginTextShort),
- u':'+self.IconPath+ u'_load.png', self.onNewClick, self.PluginTextShort+u'NewItem')
+ u':'+self.IconPath+ u'_new.png', self.onNewClick, self.PluginTextShort+u'NewItem')
## Edit Button ##
if self.hasEditIcon:
self.addToolbarButton(
translate(self.TranslationContext, u'Edit '+self.PluginTextShort),
translate(self.TranslationContext, u'Edit the selected '+self.PluginTextShort),
- u':'+self.IconPath+ u'_load.png', self.onEditClick, self.PluginTextShort+u'EditItem')
+ u':'+self.IconPath+ u'_edit.png', self.onEditClick, self.PluginTextShort+u'EditItem')
## Delete Button ##
self.addToolbarButton(
translate(self.TranslationContext, u'Delete '+self.PluginTextShort),
@@ -215,7 +217,7 @@ class MediaManagerItem(QtGui.QWidget):
translate(self.TranslationContext, u'Add the selected item(s) to the service'),
u':/system/system_add.png', self.onAddClick, self.PluginTextShort+u'AddItem')
#Allow the plugin to define it's own header
- self.addHeaderBar()
+ self.addHeaderBar2()
#Add the List widget
self.ListView = self.ListViewWithDnD_class()
self.ListView.uniformItemSizes = True
@@ -234,7 +236,7 @@ class MediaManagerItem(QtGui.QWidget):
':' +self.IconPath+u'_new.png',
translate(self.TranslationContext, u'&Edit '+self.PluginTextShort),
self.onEditClick))
- self.ListView.addAction(self.contextMenuSeparator(self.SongListWidget))
+ self.ListView.addAction(contextMenuSeparator(self.ListView))
self.ListView.addAction(contextMenuAction(
self.ListView, ':/system/system_preview.png',
translate(self.TranslationContext, u'&Preview '+self.PluginTextShort),
@@ -258,7 +260,16 @@ class MediaManagerItem(QtGui.QWidget):
"""
pass
- def addHeaderBar(self):
+ def addHeaderBar1(self):
+ """
+ Slot at start of toolbar for pluin to addwidgets
+ """
+ pass
+
+ def addHeaderBar2(self):
+ """
+ Slot at end of toolbar for pluin to add widgets
+ """
pass
def onFileClick(self):
diff --git a/openlp/plugins/custom/customplugin.py b/openlp/plugins/custom/customplugin.py
index fd1cb43e1..352cf1c53 100644
--- a/openlp/plugins/custom/customplugin.py
+++ b/openlp/plugins/custom/customplugin.py
@@ -23,10 +23,18 @@ from PyQt4 import QtCore, QtGui
from forms import EditCustomForm
from openlp.core.lib import Plugin
-from openlp.plugins.custom.lib import CustomManager, CustomTab, CustomMediaItem
+from openlp.plugins.custom.lib import CustomManager, CustomMediaItem
class CustomPlugin(Plugin):
+ """
+ This plugin enables the user to create, edit and display
+ custom slide shows. Custom shows are divided into slides.
+ Each show is able to have it's own theme.
+ Custom shows are designed to replace the use of songs where
+ the songs plugin has become restrictive. Examples could be
+ Welcome slides, Bible Reading information, Orders of service.
+ """
global log
log=logging.getLogger(u'CustomPlugin')
diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py
index 6b2fefa32..8eef9291b 100644
--- a/openlp/plugins/custom/forms/editcustomdialog.py
+++ b/openlp/plugins/custom/forms/editcustomdialog.py
@@ -1,11 +1,22 @@
# -*- 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,
-# Form implementation generated from reading ui file 'editcustomdialog.ui'
-#
-# Created: Sat Mar 7 09:01:43 2009
-# by: PyQt4 UI code generator 4.4.4
-#
-# WARNING! All changes made in this file will be lost!
+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 QtCore, QtGui
from openlp.core.lib import translate
@@ -15,7 +26,7 @@ class Ui_customEditDialog(object):
customEditDialog.setObjectName(u'customEditDialog')
customEditDialog.resize(590, 541)
icon = QtGui.QIcon()
- icon.addPixmap(QtGui.QPixmap(u':/icon/openlp-logo-16x16.png'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+ icon.addPixmap(QtGui.QPixmap(u':/icon/openlp.org-icon-32.bmp'), QtGui.QIcon.Normal, QtGui.QIcon.Off)
customEditDialog.setWindowIcon(icon)
self.gridLayout = QtGui.QGridLayout(customEditDialog)
self.gridLayout.setObjectName(u'gridLayout')
@@ -31,8 +42,8 @@ class Ui_customEditDialog(object):
self.horizontalLayout_4 = QtGui.QHBoxLayout()
self.horizontalLayout_4.setObjectName(u'horizontalLayout_4')
self.VerseListView = QtGui.QListWidget(customEditDialog)
- self.VerseListView.setObjectName(u'VerseListView')
self.VerseListView.setAlternatingRowColors(True)
+ self.VerseListView.setObjectName(u'VerseListView')
self.horizontalLayout_4.addWidget(self.VerseListView)
self.verticalLayout = QtGui.QVBoxLayout()
self.verticalLayout.setObjectName(u'verticalLayout')
@@ -54,47 +65,49 @@ class Ui_customEditDialog(object):
self.gridLayout.addLayout(self.horizontalLayout_4, 1, 0, 1, 1)
self.EditWidget = QtGui.QWidget(customEditDialog)
self.EditWidget.setObjectName(u'EditWidget')
- self.EditLayout = QtGui.QHBoxLayout(self.EditWidget)
- self.EditLayout.setSpacing(8)
- self.EditLayout.setMargin(0)
- self.EditLayout.setObjectName(u'EditLayout')
+ self.EditLayout_3 = QtGui.QHBoxLayout(self.EditWidget)
+ self.EditLayout_3.setSpacing(8)
+ self.EditLayout_3.setMargin(0)
+ self.EditLayout_3.setObjectName(u'EditLayout_3')
self.VerseTextEdit = QtGui.QTextEdit(self.EditWidget)
self.VerseTextEdit.setObjectName(u'VerseTextEdit')
- self.EditLayout.addWidget(self.VerseTextEdit)
- self.ButtonWidget = QtGui.QWidget(self.EditWidget)
- self.ButtonWidget.setObjectName(u'ButtonWidget')
- self.ButtonLayout = QtGui.QVBoxLayout(self.ButtonWidget)
- self.ButtonLayout.setSpacing(8)
- self.ButtonLayout.setMargin(0)
- self.ButtonLayout.setObjectName(u'ButtonLayout')
- self.AddButton = QtGui.QPushButton(self.ButtonWidget)
+ self.EditLayout_3.addWidget(self.VerseTextEdit)
+ self.ButtonWidge = QtGui.QWidget(self.EditWidget)
+ self.ButtonWidge.setObjectName(u'ButtonWidge')
+ self.verticalLayout_2 = QtGui.QVBoxLayout(self.ButtonWidge)
+ self.verticalLayout_2.setObjectName(u'verticalLayout_2')
+ self.AddButton = QtGui.QPushButton(self.ButtonWidge)
self.AddButton.setObjectName(u'AddButton')
- self.ButtonLayout.addWidget(self.AddButton)
- self.EditButton = QtGui.QPushButton(self.ButtonWidget)
+ self.AddButton.setToolTip(translate(u'customEditDialog', u'Add new slide at bottom'))
+ self.verticalLayout_2.addWidget(self.AddButton)
+ self.EditButton = QtGui.QPushButton(self.ButtonWidge)
self.EditButton.setObjectName(u'EditButton')
- self.ButtonLayout.addWidget(self.EditButton)
- self.SaveButton = QtGui.QPushButton(self.ButtonWidget)
+ self.verticalLayout_2.addWidget(self.EditButton)
+ self.EditAllButton = QtGui.QPushButton(self.ButtonWidge)
+ self.EditAllButton.setObjectName(u'EditAllButton')
+ self.verticalLayout_2.addWidget(self.EditAllButton)
+ self.SaveButton = QtGui.QPushButton(self.ButtonWidge)
self.SaveButton.setObjectName(u'SaveButton')
- self.ButtonLayout.addWidget(self.SaveButton)
- self.DeleteButton = QtGui.QPushButton(self.ButtonWidget)
+ self.verticalLayout_2.addWidget(self.SaveButton)
+ self.DeleteButton = QtGui.QPushButton(self.ButtonWidge)
self.DeleteButton.setObjectName(u'DeleteButton')
- self.ButtonLayout.addWidget(self.DeleteButton)
- self.ClearButton = QtGui.QPushButton(self.ButtonWidget)
+ self.verticalLayout_2.addWidget(self.DeleteButton)
+ self.ClearButton = QtGui.QPushButton(self.ButtonWidge)
self.ClearButton.setObjectName(u'ClearButton')
- self.ButtonLayout.addWidget(self.ClearButton)
+ self.verticalLayout_2.addWidget(self.ClearButton)
spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
- self.ButtonLayout.addItem(spacerItem1)
- self.EditLayout.addWidget(self.ButtonWidget)
+ self.verticalLayout_2.addItem(spacerItem1)
+ self.EditLayout_3.addWidget(self.ButtonWidge)
self.gridLayout.addWidget(self.EditWidget, 2, 0, 1, 1)
- self.horizontalLayout = QtGui.QHBoxLayout()
- self.horizontalLayout.setObjectName(u'horizontalLayout')
+ self.horizontalLayout_3 = QtGui.QHBoxLayout()
+ self.horizontalLayout_3.setObjectName(u'horizontalLayout_3')
self.ThemeLabel = QtGui.QLabel(customEditDialog)
self.ThemeLabel.setObjectName(u'ThemeLabel')
- self.horizontalLayout.addWidget(self.ThemeLabel)
- self.ThemecomboBox = QtGui.QComboBox(customEditDialog)
- self.ThemecomboBox.setObjectName(u'ThemecomboBox')
- self.horizontalLayout.addWidget(self.ThemecomboBox)
- self.gridLayout.addLayout(self.horizontalLayout, 3, 0, 1, 1)
+ self.horizontalLayout_3.addWidget(self.ThemeLabel)
+ self.ThemeComboBox = QtGui.QComboBox(customEditDialog)
+ self.ThemeComboBox.setObjectName(u'ThemeComboBox')
+ self.horizontalLayout_3.addWidget(self.ThemeComboBox)
+ self.gridLayout.addLayout(self.horizontalLayout_3, 3, 0, 1, 1)
self.horizontalLayout_2 = QtGui.QHBoxLayout()
self.horizontalLayout_2.setObjectName(u'horizontalLayout_2')
self.CreditLabel = QtGui.QLabel(customEditDialog)
@@ -108,24 +121,39 @@ class Ui_customEditDialog(object):
self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok)
self.buttonBox.setObjectName(u'buttonBox')
self.gridLayout.addWidget(self.buttonBox, 5, 0, 1, 1)
+
self.retranslateUi(customEditDialog)
QtCore.QMetaObject.connectSlotsByName(customEditDialog)
customEditDialog.setTabOrder(self.TitleEdit, self.VerseTextEdit)
- customEditDialog.setTabOrder(self.VerseTextEdit, self.EditButton)
- customEditDialog.setTabOrder(self.EditButton, self.SaveButton)
- customEditDialog.setTabOrder(self.SaveButton, self.CreditEdit)
- customEditDialog.setTabOrder(self.CreditEdit, self.VerseListView)
- customEditDialog.setTabOrder(self.VerseListView, self.AddButton)
- customEditDialog.setTabOrder(self.AddButton, self.DeleteButton)
- customEditDialog.setTabOrder(self.DeleteButton, self.buttonBox)
+ customEditDialog.setTabOrder(self.VerseTextEdit, self.AddButton)
+ customEditDialog.setTabOrder(self.AddButton, self.VerseListView)
+ customEditDialog.setTabOrder(self.VerseListView, self.EditButton)
+ customEditDialog.setTabOrder(self.EditButton, self.EditAllButton)
+ customEditDialog.setTabOrder(self.EditAllButton, self.SaveButton)
+ customEditDialog.setTabOrder(self.SaveButton, self.DeleteButton)
+ customEditDialog.setTabOrder(self.DeleteButton, self.CreditEdit)
+ customEditDialog.setTabOrder(self.CreditEdit, self.UpButton)
+ customEditDialog.setTabOrder(self.UpButton, self.DownButton)
+ customEditDialog.setTabOrder(self.DownButton, self.ThemeComboBox)
+ customEditDialog.setTabOrder(self.ThemeComboBox, self.buttonBox)
def retranslateUi(self, customEditDialog):
- customEditDialog.setWindowTitle(translate(u'customEditDialog', u'Edit Custom Slides'))
- self.TitleLabel.setText(translate(u'customEditDialog', u'Title:'))
- self.AddButton.setText(translate(u'customEditDialog', u'Add'))
- self.EditButton.setText(translate(u'customEditDialog', u'Edit'))
- self.SaveButton.setText(translate(u'customEditDialog', u'Save'))
- self.DeleteButton.setText(translate(u'customEditDialog', u'Delete'))
- self.ClearButton.setText(translate(u'customEditDialog', u'Clear'))
- self.ThemeLabel.setText(translate(u'customEditDialog', u'Theme:'))
- self.CreditLabel.setText(translate(u'customEditDialog', u'Credits:'))
+ self.UpButton.setToolTip(translate(u'customEditDialog', u'Move slide Up 1'))
+ self.DownButton.setToolTip(translate(u'customEditDialog', u'Move slide down 1'))
+ customEditDialog.setWindowTitle(translate(u'customEditDialog', 'Edit Custom Slides'))
+ self.TitleLabel.setText(translate(u'customEditDialog', 'Title:'))
+ self.AddButton.setText(translate(u'customEditDialog', 'Add New'))
+ self.AddButton.setToolTip(translate(u'customEditDialog', u'Add new slide at bottom'))
+ self.EditButton.setText(translate(u'customEditDialog', 'Edit'))
+ self.EditButton.setToolTip(translate(u'customEditDialog', u'Edit selected slide'))
+ self.EditAllButton.setText(translate(u'customEditDialog', 'Edit All'))
+ self.EditAllButton.setToolTip(translate(u'customEditDialog', u'Edit all slides'))
+ self.SaveButton.setText(translate(u'customEditDialog', 'Save'))
+ self.SaveButton.setToolTip(translate(u'customEditDialog', u'Replace edited slide'))
+ self.DeleteButton.setText(translate(u'customEditDialog', 'Delete'))
+ self.DeleteButton.setToolTip(translate(u'customEditDialog', u'Delete selected slide'))
+ self.ClearButton.setText(translate(u'customEditDialog', 'Clear'))
+ self.ClearButton.setToolTip(translate(u'customEditDialog', u'Clear edit area'))
+ self.ThemeLabel.setText(translate(u'customEditDialog', 'Theme:'))
+ self.ThemeComboBox.setToolTip(translate(u'customEditDialog', u'Set Theme for Slides'))
+ self.CreditLabel.setText(translate(u'customEditDialog', 'Credits:'))
diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py
index a223a9429..260e08424 100644
--- a/openlp/plugins/custom/forms/editcustomform.py
+++ b/openlp/plugins/custom/forms/editcustomform.py
@@ -35,20 +35,33 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
#self.parent = parent
self.setupUi(self)
# Connecting signals and slots
- QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), self.rejected)
- QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), self.accept)
- QtCore.QObject.connect(self.AddButton, QtCore.SIGNAL(u'pressed()'), self.onAddButtonPressed)
- QtCore.QObject.connect(self.EditButton, QtCore.SIGNAL(u'pressed()'), self.onEditButtonPressed)
- QtCore.QObject.connect(self.SaveButton, QtCore.SIGNAL(u'pressed()'), self.onSaveButtonPressed)
- QtCore.QObject.connect(self.DeleteButton, QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonPressed)
- QtCore.QObject.connect(self.ClearButton, QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed)
- QtCore.QObject.connect(self.UpButton, QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed)
- QtCore.QObject.connect(self.DownButton, QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed)
+ QtCore.QObject.connect(self.buttonBox,
+ QtCore.SIGNAL(u'rejected()'), self.rejected)
+ QtCore.QObject.connect(self.buttonBox,
+ QtCore.SIGNAL(u'accepted()'), self.accept)
+ QtCore.QObject.connect(self.AddButton,
+ QtCore.SIGNAL(u'pressed()'), self.onAddButtonPressed)
+ QtCore.QObject.connect(self.EditButton,
+ QtCore.SIGNAL(u'pressed()'), self.onEditButtonPressed)
+ QtCore.QObject.connect(self.EditAllButton,
+ QtCore.SIGNAL(u'pressed()'), self.onEditAllButtonPressed)
+ QtCore.QObject.connect(self.SaveButton,
+ QtCore.SIGNAL(u'pressed()'), self.onSaveButtonPressed)
+ QtCore.QObject.connect(self.DeleteButton,
+ QtCore.SIGNAL(u'pressed()'), self.onDeleteButtonPressed)
+ QtCore.QObject.connect(self.ClearButton,
+ QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed)
+ QtCore.QObject.connect(self.UpButton,
+ QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed)
+ QtCore.QObject.connect(self.DownButton,
+ QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed)
QtCore.QObject.connect(self.VerseListView,
- QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), self.onVerseListViewSelected)
+ QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'),
+ self.onVerseListViewSelected)
QtCore.QObject.connect(self.VerseListView,
- QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onVerseListViewPressed)
+ QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'),
+ self.onVerseListViewPressed)
QtCore.QObject.connect(Receiver.get_receiver(),
QtCore.SIGNAL(u'update_themes'), self.loadThemes)
# Create other objects and forms
@@ -56,23 +69,25 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
self.initialise()
def initialise(self):
- self.valid = True
+ self.editAll = False
self.DeleteButton.setEnabled(False)
self.EditButton.setEnabled(False)
+ self.EditAllButton.setEnabled(True)
self.SaveButton.setEnabled(False)
+ self.ClearButton.setEnabled(False)
self.TitleEdit.setText(u'')
self.CreditEdit.setText(u'')
self.VerseTextEdit.clear()
self.VerseListView.clear()
#make sure we have a new item
self.customSlide = CustomSlide()
- self.ThemecomboBox.addItem(u'')
+ self.ThemeComboBox.addItem(u'')
def loadThemes(self, themelist):
- self.ThemecomboBox.clear()
- self.ThemecomboBox.addItem(u'')
+ self.ThemeComboBox.clear()
+ self.ThemeComboBox.addItem(u'')
for themename in themelist:
- self.ThemecomboBox.addItem(themename)
+ self.ThemeComboBox.addItem(themename)
def loadCustom(self, id):
self.customSlide = CustomSlide()
@@ -87,12 +102,12 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
for verse in verseList:
self.VerseListView.addItem(verse[1])
theme = unicode(self.customSlide.theme_name)
- id = self.ThemecomboBox.findText(theme, QtCore.Qt.MatchExactly)
+ id = self.ThemeComboBox.findText(theme, QtCore.Qt.MatchExactly)
if id == -1:
id = 0 # Not Found
- self.ThemecomboBox.setCurrentIndex(id)
+ self.ThemeComboBox.setCurrentIndex(id)
else:
- self.ThemecomboBox.setCurrentIndex(0)
+ self.ThemeComboBox.setCurrentIndex(0)
def accept(self):
valid , message = self._validate()
@@ -111,7 +126,7 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
self.customSlide.title = unicode(self.TitleEdit.displayText())
self.customSlide.text = unicode(sxml.extract_xml())
self.customSlide.credits = unicode(self.CreditEdit.displayText())
- self.customSlide.theme_name = unicode(self.ThemecomboBox.currentText())
+ self.customSlide.theme_name = unicode(self.ThemeComboBox.currentText())
self.custommanager.save_slide(self.customSlide)
self.close()
@@ -135,6 +150,10 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
def onClearButtonPressed(self):
self.VerseTextEdit.clear()
+ self.editAll = False
+ self.AddButton.setEnabled(True)
+ self.EditAllButton.setEnabled(True)
+ self.SaveButton.setEnabled(False)
def onVerseListViewPressed(self, item):
self.DeleteButton.setEnabled(True)
@@ -151,30 +170,52 @@ class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
def onEditButtonPressed(self):
self.editText(self.VerseListView.currentItem().text())
+ def onEditAllButtonPressed(self):
+ self.editAll = True
+ self.AddButton.setEnabled(False)
+ if self.VerseListView.count() > 0:
+ verse_list = u''
+ for row in range(0, self.VerseListView.count()):
+ item = self.VerseListView.item(row)
+ verse_list += item.text()
+ verse_list += u'\n---\n'
+ self.editText(verse_list)
+
def editText(self, text):
self.beforeText = text
self.VerseTextEdit.setPlainText(text)
self.DeleteButton.setEnabled(False)
self.EditButton.setEnabled(False)
+ self.EditAllButton.setEnabled(False)
self.SaveButton.setEnabled(True)
+ self.ClearButton.setEnabled(True)
def onSaveButtonPressed(self):
- self.VerseListView.currentItem().setText(self.VerseTextEdit.toPlainText())
- #number of lines has change
- if len(self.beforeText.split(u'\n')) != len(self.VerseTextEdit.toPlainText().split(u'\n')):
- tempList = {}
- for row in range(0, self.VerseListView.count()):
- tempList[row] = self.VerseListView.item(row).text()
+ if self.editAll:
self.VerseListView.clear()
- for row in range (0, len(tempList)):
- self.VerseListView.addItem(tempList[row])
- self.VerseListView.repaint()
+ for row in unicode(self.VerseTextEdit.toPlainText()).split(u'---'):
+ self.VerseListView.addItem(row)
+ else:
+ self.VerseListView.currentItem().setText(self.VerseTextEdit.toPlainText())
+ #number of lines has change
+ if len(self.beforeText.split(u'\n')) != len(self.VerseTextEdit.toPlainText().split(u'\n')):
+ tempList = {}
+ for row in range(0, self.VerseListView.count()):
+ tempList[row] = self.VerseListView.item(row).text()
+ self.VerseListView.clear()
+ for row in range (0, len(tempList)):
+ self.VerseListView.addItem(tempList[row])
+ self.VerseListView.repaint()
+ self.AddButton.setEnabled(True)
self.SaveButton.setEnabled(False)
self.EditButton.setEnabled(False)
+ self.EditAllButton.setEnabled(True)
+ self.VerseTextEdit.clear()
def onDeleteButtonPressed(self):
self.VerseListView.takeItem(self.VerseListView.currentRow())
self.EditButton.setEnabled(False)
+ self.EditAllButton.setEnabled(True)
def _validate(self):
valid = True
diff --git a/openlp/plugins/custom/lib/__init__.py b/openlp/plugins/custom/lib/__init__.py
index afecb5dd1..92c85de87 100644
--- a/openlp/plugins/custom/lib/__init__.py
+++ b/openlp/plugins/custom/lib/__init__.py
@@ -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 manager import CustomManager
-from customtab import CustomTab
from mediaitem import CustomMediaItem
diff --git a/openlp/plugins/custom/lib/customtab.py b/openlp/plugins/custom/lib/customtab.py
deleted file mode 100644
index 2140cd1e2..000000000
--- a/openlp/plugins/custom/lib/customtab.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- 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
-"""
-
-from PyQt4 import QtCore, QtGui
-
-from openlp.core.lib import SettingsTab, translate
-
-class CustomTab(SettingsTab):
- """
- SongsTab is the songs settings tab in the settings dialog.
- """
- def __init__(self):
- SettingsTab.__init__(self, translate(u'CustomTab', u'Custom'), u'Custom')
-
- def setupUi(self):
- self.setObjectName(u'CustomTab')
diff --git a/openlp/plugins/custom/lib/mediaitem.py b/openlp/plugins/custom/lib/mediaitem.py
index d264d52d4..3ce6433c7 100644
--- a/openlp/plugins/custom/lib/mediaitem.py
+++ b/openlp/plugins/custom/lib/mediaitem.py
@@ -21,7 +21,8 @@ import logging
from PyQt4 import QtCore, QtGui
-from openlp.core.lib import MediaManagerItem, SongXMLParser, ServiceItem, translate, contextMenuAction, contextMenuSeparator, BaseListWithDnD
+from openlp.core.lib import MediaManagerItem, SongXMLParser, ServiceItem, \
+ translate, contextMenuAction, contextMenuSeparator, BaseListWithDnD
class CustomListView(BaseListWithDnD):
def __init__(self, parent=None):
@@ -40,77 +41,86 @@ class CustomMediaItem(MediaManagerItem):
self.TranslationContext = u'CustomPlugin'
self.PluginTextShort = u'Custom'
self.ConfigSection = u'custom'
+ self.IconPath = u'custom/custom'
+ self.hasFileIcon = False
+ self.hasNewIcon = True
+ self.hasEditIcon = True
+ # 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
- def setupUi(self):
- # Add a toolbar
- self.addToolbar()
- # Create buttons for the toolbar
- ## New Custom Button ##
- self.addToolbarButton(
- translate(u'CustomMediaItem',u'New Custom Item'),
- translate(u'CustomMediaItem',u'Add a new Custom Item'),
- u':/custom/custom_new.png', self.onCustomNewClick, u'CustomNewItem')
- ## Edit Custom Button ##
- self.addToolbarButton(
- translate(u'CustomMediaItem',u'Edit Custom Item'),
- translate(u'CustomMediaItem',u'Edit the selected Custom Item'),
- u':/custom/custom_edit.png', self.onCustomEditClick, u'CustomEditItem')
- ## Delete Custom Button ##
- self.addToolbarButton(
- translate(u'CustomMediaItem',u'Delete Custom Item'),
- translate(u'CustomMediaItem',u'Delete the selected Custom Item'),
- u':/custom/custom_delete.png', self.onCustomDeleteClick, u'CustomDeleteItem')
- ## Separator Line ##
- self.addToolbarSeparator()
- ## Preview Custom Button ##
- self.addToolbarButton(
- translate(u'CustomMediaItem',u'Preview Custom Item'),
- translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
- u':/system/system_preview.png', self.onPreviewClick, u'CustomPreviewItem')
- ## Live Custom Button ##
- self.addToolbarButton(
- translate(u'CustomMediaItem',u'Go Live'),
- translate(u'CustomMediaItem', u'Send the selected Custom live'),
- u':/system/system_live.png', self.onLiveClick, u'CustomLiveItem')
- ## Add Custom Button ##
- self.addToolbarButton(
- translate(u'CustomMediaItem',u'Add Custom To Service'),
- translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
- u':/system/system_add.png', self.onAddClick, u'CustomAddItem')
- # Add the CustomListView widget
- self.CustomWidget = QtGui.QWidget(self)
- sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
- sizePolicy.setHorizontalStretch(0)
- sizePolicy.setVerticalStretch(0)
- sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth())
- self.CustomWidget.setSizePolicy(sizePolicy)
- self.CustomWidget.setObjectName(u'CustomWidget')
- # Add the Custom widget to the page layout
- self.PageLayout.addWidget(self.CustomWidget)
- self.ListView = CustomListView()
- self.ListView.setAlternatingRowColors(True)
- self.ListView.setDragEnabled(True)
- self.PageLayout.addWidget(self.ListView)
- # Signals
- QtCore.QObject.connect(self.ListView,
- QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
- #define and add the context menu
- self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
- self.ListView.addAction(contextMenuAction(self.ListView,
- ':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'),
- self.onCustomEditClick))
- self.ListView.addAction(contextMenuSeparator(self.ListView))
- self.ListView.addAction(contextMenuAction(
- self.ListView, ':/system/system_preview.png',
- translate(u'CustomMediaItem',u'&Preview Custom'), self.onPreviewClick))
- self.ListView.addAction(contextMenuAction(
- self.ListView, ':/system/system_live.png',
- translate(u'CustomMediaItem',u'&Show Live'), self.onLiveClick))
- self.ListView.addAction(contextMenuAction(
- self.ListView, ':/system/system_add.png',
- translate(u'CustomMediaItem',u'&Add to Service'), self.onAddClick))
+# def addHeaderBar(self):
+# # Add a toolbar
+# self.addToolbar()
+# # Create buttons for the toolbar
+# ## New Custom Button ##
+# self.addToolbarButton(
+# translate(u'CustomMediaItem',u'New Custom Item'),
+# translate(u'CustomMediaItem',u'Add a new Custom Item'),
+# u':/custom/custom_new.png', self.onCustomNewClick, u'CustomNewItem')
+# ## Edit Custom Button ##
+# self.addToolbarButton(
+# translate(u'CustomMediaItem',u'Edit Custom Item'),
+# translate(u'CustomMediaItem',u'Edit the selected Custom Item'),
+# u':/custom/custom_edit.png', self.onCustomEditClick, u'CustomEditItem')
+# ## Delete Custom Button ##
+# self.addToolbarButton(
+# translate(u'CustomMediaItem',u'Delete Custom Item'),
+# translate(u'CustomMediaItem',u'Delete the selected Custom Item'),
+# u':/custom/custom_delete.png', self.onCustomDeleteClick, u'CustomDeleteItem')
+# ## Separator Line ##
+# self.addToolbarSeparator()
+# ## Preview Custom Button ##
+# self.addToolbarButton(
+# translate(u'CustomMediaItem',u'Preview Custom Item'),
+# translate(u'CustomMediaItem',u'Preview the selected Custom Item'),
+# u':/system/system_preview.png', self.onPreviewClick, u'CustomPreviewItem')
+# ## Live Custom Button ##
+# self.addToolbarButton(
+# translate(u'CustomMediaItem',u'Go Live'),
+# translate(u'CustomMediaItem', u'Send the selected Custom live'),
+# u':/system/system_live.png', self.onLiveClick, u'CustomLiveItem')
+# ## Add Custom Button ##
+# self.addToolbarButton(
+# translate(u'CustomMediaItem',u'Add Custom To Service'),
+# translate(u'CustomMediaItem',u'Add the selected Custom(s) to the service'),
+# u':/system/system_add.png', self.onAddClick, u'CustomAddItem')
+# # Add the CustomListView widget
+# self.CustomWidget = QtGui.QWidget(self)
+# sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
+# sizePolicy.setHorizontalStretch(0)
+# sizePolicy.setVerticalStretch(0)
+# sizePolicy.setHeightForWidth(self.CustomWidget.sizePolicy().hasHeightForWidth())
+# self.CustomWidget.setSizePolicy(sizePolicy)
+# self.CustomWidget.setObjectName(u'CustomWidget')
+# # Add the Custom widget to the page layout
+# self.PageLayout.addWidget(self.CustomWidget)
+# self.ListView = CustomListView()
+# self.ListView.setAlternatingRowColors(True)
+# self.ListView.setDragEnabled(True)
+# self.PageLayout.addWidget(self.ListView)
+# # Signals
+# QtCore.QObject.connect(self.ListView,
+# QtCore.SIGNAL(u'doubleClicked(QModelIndex)'), self.onPreviewClick)
+# #define and add the context menu
+# self.ListView.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu)
+# self.ListView.addAction(contextMenuAction(self.ListView,
+# ':/custom/custom_edit.png', translate(u'CustomMediaItem', u'&Edit Custom'),
+# self.onCustomEditClick))
+# self.ListView.addAction(contextMenuSeparator(self.ListView))
+# self.ListView.addAction(contextMenuAction(
+# self.ListView, ':/system/system_preview.png',
+# translate(u'CustomMediaItem',u'&Preview Custom'), self.onPreviewClick))
+# self.ListView.addAction(contextMenuAction(
+# self.ListView, ':/system/system_live.png',
+# translate(u'CustomMediaItem',u'&Show Live'), self.onLiveClick))
+# self.ListView.addAction(contextMenuAction(
+# self.ListView, ':/system/system_add.png',
+# translate(u'CustomMediaItem',u'&Add to Service'), self.onAddClick))
def initialise(self):
self.loadCustomListView(self.parent.custommanager.get_all_slides())
@@ -122,12 +132,12 @@ class CustomMediaItem(MediaManagerItem):
custom_name.setData(QtCore.Qt.UserRole, QtCore.QVariant(CustomSlide.id))
self.ListView.addItem(custom_name)
- def onCustomNewClick(self):
+ def onNewClick(self):
self.parent.edit_custom_form.loadCustom(0)
self.parent.edit_custom_form.exec_()
self.initialise()
- def onCustomEditClick(self):
+ def onEditClick(self):
item = self.ListView.currentItem()
if item is not None:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
@@ -135,7 +145,7 @@ class CustomMediaItem(MediaManagerItem):
self.parent.edit_custom_form.exec_()
self.initialise()
- def onCustomDeleteClick(self):
+ def onDeleteClick(self):
item = self.ListView.currentItem()
if item is not None:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
diff --git a/openlp/plugins/images/lib/mediaitem.py b/openlp/plugins/images/lib/mediaitem.py
index 467ab20e2..c725e27a4 100644
--- a/openlp/plugins/images/lib/mediaitem.py
+++ b/openlp/plugins/images/lib/mediaitem.py
@@ -48,7 +48,6 @@ class ImageMediaItem(MediaManagerItem):
self.hasEditIcon = False
self.OnNewPrompt = u'Select Image(s)'
self.OnNewFileMasks = u'Images (*.jpg *jpeg *.gif *.png *.bmp)'
- self.slidecontroller = u'image'
# this next is a class, not an instance of a class - it will
# be instanced by the base MediaManagerItem
self.ListViewWithDnD_class = ImageListView
diff --git a/openlp/plugins/presentations/lib/mediaitem.py b/openlp/plugins/presentations/lib/mediaitem.py
index 96b64b6cb..35f37f704 100644
--- a/openlp/plugins/presentations/lib/mediaitem.py
+++ b/openlp/plugins/presentations/lib/mediaitem.py
@@ -57,7 +57,7 @@ class PresentationMediaItem(MediaManagerItem):
MediaManagerItem.__init__(self, parent, icon, title)
self.message_listener = MessageListener(controllers)
- def addHeaderBar(self):
+ def addHeaderBar2(self):
self.PresentationWidget = QtGui.QWidget(self)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)
diff --git a/resources/forms/editcustomdialog.ui b/resources/forms/editcustomdialog.ui
index 3fce3f588..98bc1abb0 100644
--- a/resources/forms/editcustomdialog.ui
+++ b/resources/forms/editcustomdialog.ui
@@ -14,7 +14,7 @@
Edit Custom Slides
-
+
:/icon/openlp.org-icon-32.bmp:/icon/openlp.org-icon-32.bmp
@@ -35,12 +35,19 @@
-
-
-
+
+
+ true
+
+
-
-
+
+
+
@@ -65,6 +72,9 @@
-
+
+
+
@@ -88,33 +98,46 @@
0
-
-
+
-
-
-
- 8
-
-
- 0
-
+
-
-
+
+
+
+
- Add
+ Add New
-
-
+
+
+
+
Edit
-
-
+
+
+
+
+
+ Edit All
+
+
+
+ -
+
+
+
+
Save
@@ -122,11 +145,24 @@
-
+
+
+
Delete
+ -
+
+
+
+
+
+ Clear
+
+
+
-
@@ -156,7 +192,11 @@
-
-
+
+
+
+
+
@@ -185,13 +225,17 @@
TitleEdit
- VerseTextEdit_3
- EditButton_3
- SaveButton_3
- CreditEdit
+ VerseTextEdit
+ AddButton
VerseListView
- AddButton_3
+ EditButton
+ EditAllButton
+ SaveButton
DeleteButton
+ CreditEdit
+ UpButton
+ DownButton
+ ThemeComboBox
buttonBox