Updates to Presentations etc

bzr-revno: 538
This commit is contained in:
Tim Bentley 2009-09-14 17:38:32 +01:00
commit e17b12839f
21 changed files with 316 additions and 260 deletions

View File

@ -178,6 +178,8 @@ class MediaManagerItem(QtGui.QWidget):
"""
# Add a toolbar
self.addToolbar()
#Allow the plugin to define it's own header
self.addStartHeaderBar()
# Create buttons for the toolbar
## File Button ##
if self.hasFileIcon:
@ -190,13 +192,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),
@ -220,7 +222,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.addEndHeaderBar()
#Add the List widget
self.ListView = self.ListViewWithDnD_class()
self.ListView.uniformItemSizes = True
@ -239,7 +241,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),
@ -263,7 +265,16 @@ class MediaManagerItem(QtGui.QWidget):
"""
pass
def addHeaderBar(self):
def addStartHeaderBar(self):
"""
Slot at start of toolbar for plugin to addwidgets
"""
pass
def addEndHeaderBar(self):
"""
Slot at end of toolbar for plugin to add widgets
"""
pass
def onFileClick(self):

View File

@ -519,7 +519,7 @@ class Renderer(object):
self.footerFont = QtGui.QFont(self._theme.font_footer_name,
int(self._theme.font_footer_proportion), # size
int(footer_weight), # weight
self._theme.font_footer_italics)# italic
self._theme.font_footer_italics) # italic
self.footerFont.setPixelSize(int(self._theme.font_footer_proportion))
main_weight = 50
if self._theme.font_main_weight == u'Bold':

View File

@ -88,13 +88,13 @@ class ServiceItem(object):
The render method is what renders the frames for the screen.
"""
log.debug(u'Render called')
if self.theme == None:
self.RenderManager.set_override_theme(None)
else:
self.RenderManager.set_override_theme(self.theme)
log.debug(u'Formatting slides')
self.frames = []
if self.service_item_type == ServiceType.Text:
log.debug(u'Formatting slides')
if self.theme == None:
self.RenderManager.set_override_theme(None)
else:
self.RenderManager.set_override_theme(self.theme)
for slide in self.service_frames:
formated = self.RenderManager.format_slide(slide[u'raw_slide'])
for format in formated:

View File

@ -34,13 +34,22 @@ class SettingsManager(object):
self.width = self.screen[u'size'].width()
self.height = self.screen[u'size'].height()
self.mainwindow_height = self.height * 0.8
self.mainwindow_docbars = self.width / 5
if self.mainwindow_docbars > 300:
self.mainwindow_docbars > 300
self.mainwindow_slidecontroller = self.width / 6
self.slidecontroller = ((self.width - (self.mainwindow_docbars * 3 ) / 2 ) / 2 ) -100
mainwindow_docbars = self.width / 5
self.mainwindow_left = 0
self.mainwindow_right = 0
if mainwindow_docbars > 300:
self.mainwindow_left = 300
self.mainwindow_right = 300
self.mainwindow_left = int( ConfigHelper.get_config(
u'user interface', u'mediamanager left', self.mainwindow_left))
self.mainwindow_right = int( ConfigHelper.get_config(
u'user interface', u'mediamanager right', self.mainwindow_right))
print self.mainwindow_left, self.mainwindow_right
self.slidecontroller = (self.width - (self.mainwindow_left + self.mainwindow_right) - 100 ) / 2
self.slidecontroller_image = self.slidecontroller - 50
print self.width, self.mainwindow_docbars, self.slidecontroller, self.slidecontroller_image
print self.width, mainwindow_docbars, self.slidecontroller, self.slidecontroller_image
self.showMediaManager = str_to_bool( ConfigHelper.get_config(
u'user interface', u'display mediamanager', True))
@ -67,3 +76,7 @@ class SettingsManager(object):
ConfigHelper.set_config(u'user interface', u'display previewpanel',
isVisible)
def setDockbarLeft(self, value):
#ConfigHelper.set_config(u'user interface', u'mediamanager left', value)
pass

View File

@ -36,6 +36,15 @@ from openlp.core.lib import translate, Plugin, MediaManagerItem, \
from openlp.core.utils import ConfigHelper
class mediaDock(QtGui.QDockWidget):
def __init__(self, parent=None, name=None):
QtGui.QDockWidget.__init__(self, parent)
self.parent = parent
def resizeEvent(self, resizeEvent):
if resizeEvent.size().width() != resizeEvent.oldSize().width():
self.parent.settingsmanager.setDockbarLeft(resizeEvent.size().width())
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
"""
@ -107,7 +116,7 @@ class Ui_MainWindow(object):
self.DefaultThemeLabel.setObjectName(u'DefaultThemeLabel')
self.StatusBar.addPermanentWidget(self.DefaultThemeLabel)
# Create the MediaManager
self.MediaManagerDock = QtGui.QDockWidget(MainWindow)
self.MediaManagerDock = mediaDock(MainWindow)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(u':/system/system_mediamanager.png'),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
@ -115,7 +124,15 @@ class Ui_MainWindow(object):
self.MediaManagerDock.setFloating(False)
self.MediaManagerDock.setObjectName(u'MediaManagerDock')
self.MediaManagerDock.setMinimumWidth(
self.settingsmanager.mainwindow_docbars)
self.settingsmanager.mainwindow_left)
# self.MediaManagerDock.setSizePolicy(QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored,
# QtGui.QSizePolicy.Maximum))
# geometry = self.MediaManagerDock.geometry()
# geometry.setWidth(self.settingsmanager.mainwindow_left)
# self.MediaManagerDock.setGeometry(geometry)
# self.MediaManagerDock.setMinimumWidth(10)
self.MediaManagerContents = QtGui.QWidget()
self.MediaManagerContents.setObjectName(u'MediaManagerContents')
self.MediaManagerLayout = QtGui.QHBoxLayout(self.MediaManagerContents)
@ -139,7 +156,7 @@ class Ui_MainWindow(object):
QtGui.QDockWidget.AllDockWidgetFeatures)
self.ServiceManagerDock.setObjectName(u'ServiceManagerDock')
self.ServiceManagerDock.setMinimumWidth(
self.settingsmanager.mainwindow_docbars)
self.settingsmanager.mainwindow_right)
self.ServiceManagerContents = ServiceManager(self)
self.ServiceManagerDock.setWidget(self.ServiceManagerContents)
MainWindow.addDockWidget(

View File

@ -75,7 +75,7 @@ class SlideController(QtGui.QWidget):
self.parent = parent
self.image_list = [u'Start Loop', u'Stop Loop', u'Loop Separator', u'Image SpinBox']
self.timer_id = 0
self.item = None
self.commandItem = None
self.Panel = QtGui.QWidget(parent.ControlSplitter)
self.Splitter = QtGui.QSplitter(self.Panel)
self.Splitter.setOrientation(QtCore.Qt.Vertical)
@ -238,9 +238,9 @@ class SlideController(QtGui.QWidget):
"""
log.debug(u'addServiceItem')
#If old item was a command tell it to stop
if self.item is not None and self.item.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_stop'% self.item.name.lower())
self.item = item
if self.commandItem is not None and self.commandItem.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_stop'% self.commandItem.name.lower())
self.commandItem = item
item.render()
self.enableToolBar(item)
if item.service_item_type == ServiceType.Command:
@ -257,9 +257,9 @@ class SlideController(QtGui.QWidget):
"""
log.debug(u'addServiceItem')
#If old item was a command tell it to stop
if self.item is not None and self.item.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_stop'% self.item.name.lower())
self.item = item
if self.commandItem is not None and self.commandItem.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_stop'% self.commandItem.name.lower())
self.commandItem = item
self.enableToolBar(item)
if item.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_start'%item.name.lower(), \
@ -334,8 +334,8 @@ class SlideController(QtGui.QWidget):
"""
Go to the next slide.
"""
if self.item.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_next'% self.item.name.lower())
if self.commandItem.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_next'% self.commandItem.name.lower())
else:
row = self.PreviewListWidget.currentRow() + 1
if row == self.PreviewListWidget.rowCount():
@ -347,8 +347,8 @@ class SlideController(QtGui.QWidget):
"""
Go to the previous slide.
"""
if self.item.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_previous'% self.item.name.lower())
if self.commandItem.service_item_type == ServiceType.Command:
Receiver().send_message(u'%s_previous'% self.commandItem.name.lower())
else:
row = self.PreviewListWidget.currentRow() - 1
if row == -1:
@ -379,6 +379,3 @@ class SlideController(QtGui.QWidget):
def timerEvent(self, event):
if event.timerId() == self.timer_id:
self.onSlideSelectedNext()

View File

@ -184,14 +184,14 @@ class BiblesTab(SettingsTab):
check_state = self.NewChaptersCheckBox.checkState()
self.show_new_chapters = False
# we have a set value convert to True/False
if check_state == 2:
if check_state == QtCore.Qt.Checked:
self.show_new_chapters = True
def onBibleSearchCheckBoxChanged(self):
check_state = self.BibleSearchCheckBox.checkState()
self.bible_search = False
# we have a set value convert to True/False
if check_state == 2:
if check_state == QtCore.Qt.Checked:
self.bible_search = True
def load(self):

View File

@ -28,10 +28,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')

View File

@ -1,6 +1,5 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
@ -30,7 +29,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')
@ -46,8 +45,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')
@ -69,47 +68,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)
@ -123,24 +124,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:'))

View File

@ -40,20 +40,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
@ -61,23 +74,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()
@ -92,12 +107,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()
@ -116,7 +131,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()
@ -140,6 +155,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)
@ -156,30 +175,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

View File

@ -23,5 +23,4 @@
###############################################################################
from manager import CustomManager
from customtab import CustomTab
from mediaitem import CustomMediaItem

View File

@ -1,37 +0,0 @@
# -*- coding: utf-8 -*-
# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4
###############################################################################
# OpenLP - Open Source Lyrics Projection #
# --------------------------------------------------------------------------- #
# Copyright (c) 2008-2009 Raoul Snyman #
# Portions copyright (c) 2008-2009 Martin Thompson, Tim Bentley, Carsten #
# Tinggaard, Jon Tibble, Jonathan Corwin, Maikel Stuivenberg, Scott Guerrieri #
# --------------------------------------------------------------------------- #
# This program is free software; you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free #
# Software Foundation; version 2 of the License. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along #
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
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')

View File

@ -26,7 +26,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):
@ -45,78 +46,18 @@ 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 initialise(self):
self.loadCustomListView(self.parent.custommanager.get_all_slides())
@ -127,12 +68,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]
@ -140,7 +81,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]

View File

@ -53,7 +53,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

View File

@ -23,7 +23,7 @@
###############################################################################
from impresscontroller import ImpressController
from powerpointcontroller import PowerpointController
#from powerpointcontroller import PowerpointController
from messagelistener import MessageListener
from mediaitem import PresentationMediaItem
from presentationtab import PresentationTab

View File

@ -57,7 +57,8 @@ class ImpressController(object):
when required.
"""
log.debug(u'start Openoffice')
cmd = u'openoffice.org -nologo -norestore -minimized -headless ' + u'"' + u'-accept=socket,host=localhost,port=2002;urp;'+ u'"'
# -headless
cmd = u'openoffice.org -nologo -norestore -minimized -invisible ' + u'"' + u'-accept=socket,host=localhost,port=2002;urp;'+ u'"'
self.process = QtCore.QProcess()
self.process.startDetached(cmd)
self.process.waitForStarted()

View File

@ -62,7 +62,7 @@ class PresentationMediaItem(MediaManagerItem):
MediaManagerItem.__init__(self, parent, icon, title)
self.message_listener = MessageListener(controllers)
def addHeaderBar(self):
def addEndHeaderBar(self):
self.PresentationWidget = QtGui.QWidget(self)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
sizePolicy.setHorizontalStretch(0)

View File

@ -21,8 +21,10 @@
# with this program; if not, write to the Free Software Foundation, Inc., 59 #
# Temple Place, Suite 330, Boston, MA 02111-1307 USA #
###############################################################################
from win32com.client import Dispatch
try:
from win32com.client import Dispatch
except:
pass
# PPT API documentation:
# http://msdn.microsoft.com/en-us/library/aa269321(office.10).aspx

View File

@ -30,7 +30,12 @@ from PyQt4 import QtCore, QtGui
from openlp.core.lib import Plugin, MediaManagerItem
from openlp.plugins.presentations.lib import PresentationMediaItem, PresentationTab, \
ImpressController, PowerpointController
ImpressController
try:
from openlp.plugins.presentations.lib import PowerpointController
except:
pass
class PresentationPlugin(Plugin):
@ -72,7 +77,7 @@ class PresentationPlugin(Plugin):
"""
log.debug('check_pre_conditions')
#Lets see if Impress is required (Default is Not wanted)
if int(self.config.get_config(u'Impress', 0)) == 2:
if int(self.config.get_config(u'Impress', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked:
try:
#Check to see if we have uno installed
import uno
@ -80,8 +85,8 @@ class PresentationPlugin(Plugin):
self.registerControllers(u'Impress', openoffice)
except:
log.error(u'Reason : %s', sys.exc_info())
#Lets see if Impress is required (Default is Not wanted)
if int(self.config.get_config(u'Powerpoint', 0)) == 2:
#Lets see if Powerpoint is required (Default is Not wanted)
if int(self.config.get_config(u'Powerpoint', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked:
try:
#Check to see if we are Win32
from win32com.client import Dispatch
@ -89,8 +94,8 @@ class PresentationPlugin(Plugin):
self.registerControllers(u'Powerpoint', powerpoint)
except:
log.error(u'Reason : %s', sys.exc_info())
#Lets see if Impress is required (Default is Not wanted)
if int(self.config.get_config(u'Powerpoint Viewer', 0)) == 2:
#Lets see if Powerpoint Viewer is required (Default is Not wanted)
if int(self.config.get_config(u'Powerpoint Viewer', QtCore.Qt.Unchecked)) == QtCore.Qt.Checked:
try:
#Check to see if we are Win32
from win32com.client import Dispatch
@ -108,5 +113,4 @@ class PresentationPlugin(Plugin):
log.debug(u'Finalise')
#Ask each controller to tidy up
for controller in self.controllers:
print controller
self.controllers[controller].kill()

View File

@ -42,7 +42,7 @@ class RemotesPlugin(Plugin):
"""
log.debug('check_pre_conditions')
#Lets see if Remote is required
if int(self.config.get_config(u'startup', 0)) == 2:
if int(self.config.get_config(u'startup', 0)) == QtCore.Qt.Checked:
return True
else:
return False

View File

@ -14,7 +14,7 @@
<string>Edit Custom Slides</string>
</property>
<property name="windowIcon">
<iconset resource="../images/openlp-2.qrc">
<iconset>
<normaloff>:/icon/openlp.org-icon-32.bmp</normaloff>:/icon/openlp.org-icon-32.bmp</iconset>
</property>
<layout class="QGridLayout" name="gridLayout">
@ -35,12 +35,19 @@
<item row="1" column="0">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
<widget class="QListWidget" name="VerseListView"/>
<widget class="QListWidget" name="VerseListView">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QPushButton" name="UpButton">
<property name="toolTip">
<string extracomment="Move selected slide up one"/>
</property>
<property name="text">
<string/>
</property>
@ -65,6 +72,9 @@
</item>
<item>
<widget class="QPushButton" name="DownButton">
<property name="toolTip">
<string extracomment="Move selected slide down one"/>
</property>
<property name="text">
<string/>
</property>
@ -88,33 +98,46 @@
<number>0</number>
</property>
<item>
<widget class="QTextEdit" name="VerseTextEdit_3"/>
<widget class="QTextEdit" name="VerseTextEdit"/>
</item>
<item>
<widget class="QWidget" name="ButtonWidge" native="true">
<layout class="QVBoxLayout" name="ButtonLayout_3">
<property name="spacing">
<number>8</number>
</property>
<property name="margin">
<number>0</number>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="AddButton_3">
<widget class="QPushButton" name="AddButton">
<property name="toolTip">
<string extracomment="Adds a new slide at bottom of list"/>
</property>
<property name="text">
<string>Add</string>
<string>Add New</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="EditButton_3">
<widget class="QPushButton" name="EditButton">
<property name="toolTip">
<string extracomment="Edit selected slide"/>
</property>
<property name="text">
<string>Edit</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="SaveButton_3">
<widget class="QPushButton" name="EditAllButton">
<property name="toolTip">
<string extracomment="Edit all slides"/>
</property>
<property name="text">
<string>Edit All</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="SaveButton">
<property name="toolTip">
<string extracomment="Save changed slide"/>
</property>
<property name="text">
<string>Save</string>
</property>
@ -122,11 +145,24 @@
</item>
<item>
<widget class="QPushButton" name="DeleteButton">
<property name="toolTip">
<string extracomment="Delete selected slide"/>
</property>
<property name="text">
<string>Delete</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ClearButton">
<property name="toolTip">
<string extracomment="Clear selection"/>
</property>
<property name="text">
<string>Clear</string>
</property>
</widget>
</item>
<item>
<spacer name="ButtonSpacer">
<property name="orientation">
@ -156,7 +192,11 @@
</widget>
</item>
<item>
<widget class="QComboBox" name="ThemecomboBox"/>
<widget class="QComboBox" name="ThemeComboBox">
<property name="toolTip">
<string extracomment="Select custom theme for slide"/>
</property>
</widget>
</item>
</layout>
</item>
@ -185,13 +225,17 @@
</widget>
<tabstops>
<tabstop>TitleEdit</tabstop>
<tabstop>VerseTextEdit_3</tabstop>
<tabstop>EditButton_3</tabstop>
<tabstop>SaveButton_3</tabstop>
<tabstop>CreditEdit</tabstop>
<tabstop>VerseTextEdit</tabstop>
<tabstop>AddButton</tabstop>
<tabstop>VerseListView</tabstop>
<tabstop>AddButton_3</tabstop>
<tabstop>EditButton</tabstop>
<tabstop>EditAllButton</tabstop>
<tabstop>SaveButton</tabstop>
<tabstop>DeleteButton</tabstop>
<tabstop>CreditEdit</tabstop>
<tabstop>UpButton</tabstop>
<tabstop>DownButton</tabstop>
<tabstop>ThemeComboBox</tabstop>
<tabstop>buttonBox</tabstop>
</tabstops>
<resources>