diff --git a/openlp/core/ui/advancedtab.py b/openlp/core/ui/advancedtab.py index f68131894..58b637bc2 100644 --- a/openlp/core/ui/advancedtab.py +++ b/openlp/core/ui/advancedtab.py @@ -80,16 +80,6 @@ class AdvancedTab(SettingsTab): self.hideMouseCheckBox.setObjectName(u'hideMouseCheckBox') self.hideMouseLayout.addWidget(self.hideMouseCheckBox) self.leftLayout.addWidget(self.hideMouseGroupBox) - self.serviceOrderGroupBox = QtGui.QGroupBox(self.leftColumn) - self.serviceOrderGroupBox.setObjectName(u'serviceOrderGroupBox') - self.serviceOrderLayout = QtGui.QVBoxLayout(self.serviceOrderGroupBox) - self.serviceOrderLayout.setObjectName(u'serviceOrderLayout') - self.detailedServicePrintCheckBox = QtGui.QCheckBox( - self.serviceOrderGroupBox) - self.detailedServicePrintCheckBox.setObjectName( - u'detailedServicePrintCheckBox') - self.serviceOrderLayout.addWidget(self.detailedServicePrintCheckBox) - self.leftLayout.addWidget(self.serviceOrderGroupBox) # self.sharedDirGroupBox = QtGui.QGroupBox(self.leftColumn) # self.sharedDirGroupBox.setObjectName(u'sharedDirGroupBox') # self.sharedDirLayout = QtGui.QFormLayout(self.sharedDirGroupBox) @@ -139,11 +129,6 @@ class AdvancedTab(SettingsTab): 'Mouse Cursor')) self.hideMouseCheckBox.setText(translate('OpenLP.AdvancedTab', 'Hide the mouse cursor when moved over the display window')) - self.serviceOrderGroupBox.setTitle(translate('OpenLP.AdvancedTab', - 'Service Order Print')) - self.detailedServicePrintCheckBox.setText( - translate('OpenLP.AdvancedTab', - 'Print slide texts and service item notes as well')) # self.sharedDirGroupBox.setTitle( # translate('AdvancedTab', 'Central Data Store')) # self.sharedCheckBox.setText( @@ -179,8 +164,6 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(True)).toBool()) self.hideMouseCheckBox.setChecked( settings.value(u'hide mouse', QtCore.QVariant(False)).toBool()) - self.detailedServicePrintCheckBox.setChecked(settings.value( - u'detailed service print', QtCore.QVariant(False)).toBool()) settings.endGroup() def save(self): @@ -201,8 +184,6 @@ class AdvancedTab(SettingsTab): QtCore.QVariant(self.enableAutoCloseCheckBox.isChecked())) settings.setValue(u'hide mouse', QtCore.QVariant(self.hideMouseCheckBox.isChecked())) - settings.setValue(u'detailed service print', - QtCore.QVariant(self.detailedServicePrintCheckBox.isChecked())) settings.endGroup() # def onSharedCheckBoxChanged(self, checked): diff --git a/openlp/core/ui/printserviceorderdialog.py b/openlp/core/ui/printserviceorderdialog.py new file mode 100644 index 000000000..f8db4d1c0 --- /dev/null +++ b/openlp/core/ui/printserviceorderdialog.py @@ -0,0 +1,137 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian # +# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard, Frode Woldsund # +# --------------------------------------------------------------------------- # +# 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 build_icon, translate, SpellTextEdit + +class Ui_PrintServiceOrderDialog(object): + def setupUi(self, printServiceOrderDialog): + printServiceOrderDialog.setObjectName(u'printServiceOrderDialog') + self.dialogLayout = QtGui.QGridLayout(printServiceOrderDialog) + self.dialogLayout.setObjectName(u'dialogLayout') + self.perviewLayout = QtGui.QVBoxLayout() + self.perviewLayout.setObjectName(u'perviewLayout') + self.previewLabel = QtGui.QLabel(printServiceOrderDialog) + self.previewLabel.setSizePolicy( + QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + self.previewLabel.setObjectName(u'previewLabel') + self.perviewLayout.addWidget(self.previewLabel) + self.previewWidget = QtGui.QPrintPreviewWidget( + self.printer, self, QtCore.Qt.Widget) + self.previewWidget.setEnabled(True) + self.previewWidget.setSizePolicy( + QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Expanding) + self.previewWidget.setObjectName(u'previewWidget') + # Give the previewWidget a fixed size, to prevent resizing when clicking + # the zoom buttons. + self.previewWidget.setFixedWidth(350) + self.perviewLayout.addWidget(self.previewWidget) + self.dialogLayout.addLayout(self.perviewLayout, 0, 0, 1, 1) + self.settingsLayout = QtGui.QVBoxLayout() + self.settingsLayout.setObjectName(u'settingsLayout') + self.serviceTitleLayout = QtGui.QGridLayout() + self.serviceTitleLayout.setObjectName(u'serviceTitleLayout') + self.serviceTitleLineEdit = QtGui.QLineEdit(printServiceOrderDialog) + self.serviceTitleLineEdit.setSizePolicy( + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Preferred) + self.serviceTitleLineEdit.setObjectName(u'serviceTitleLineEdit') + self.serviceTitleLayout.addWidget(self.serviceTitleLineEdit, 1, 1, 1, 1) + self.serviceTitleLabel = QtGui.QLabel(printServiceOrderDialog) + self.serviceTitleLabel.setSizePolicy( + QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Preferred) + self.serviceTitleLabel.setObjectName(u'serviceTitleLabel') + self.serviceTitleLayout.addWidget(self.serviceTitleLabel, 1, 0, 1, 1) + self.settingsLayout.addLayout(self.serviceTitleLayout) + self.printSlideTextCheckBox = QtGui.QCheckBox(printServiceOrderDialog) + self.printSlideTextCheckBox.setObjectName(u'printSlideTextCheckBox') + self.settingsLayout.addWidget(self.printSlideTextCheckBox) + self.printNotesCheckBox = QtGui.QCheckBox(printServiceOrderDialog) + self.printNotesCheckBox.setObjectName(u'printNotesCheckBox') + self.settingsLayout.addWidget(self.printNotesCheckBox) + self.printMetaDataCheckBox = QtGui.QCheckBox(printServiceOrderDialog) + self.printMetaDataCheckBox.setObjectName(u'printMetaDataCheckBox') + self.settingsLayout.addWidget(self.printMetaDataCheckBox) + spacerItem = QtGui.QSpacerItem(20, 40, + QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding) + self.settingsLayout.addItem(spacerItem) + self.customNotesLabel = QtGui.QLabel(self) + self.customNotesLabel.setObjectName(u'customNotesLabel') + self.settingsLayout.addWidget(self.customNotesLabel) + self.customNoteEdit = SpellTextEdit(self) + self.customNoteEdit.setObjectName(u'customNoteEdit') + self.settingsLayout.addWidget(self.customNoteEdit) + self.dialogLayout.addLayout(self.settingsLayout, 0, 3, 1, 1) + self.buttonLayout = QtGui.QHBoxLayout() + self.buttonLayout.setObjectName(u'buttonLayout') + spacerItem = QtGui.QSpacerItem(40, 20, + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.buttonLayout.addItem(spacerItem) + self.cancelButton = QtGui.QPushButton(printServiceOrderDialog) + self.cancelButton.setObjectName(u'cancelButton') + self.buttonLayout.addWidget(self.cancelButton) + self.printButton = QtGui.QPushButton(printServiceOrderDialog) + self.printButton.setObjectName(u'printButton') + self.buttonLayout.addWidget(self.printButton) + self.dialogLayout.addLayout(self.buttonLayout, 1, 3, 1, 1) + self.zoomButtonLayout = QtGui.QHBoxLayout() + self.zoomButtonLayout.setObjectName(u'zoomButtonLayout') + spacerItem = QtGui.QSpacerItem(40, 20, + QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum) + self.zoomButtonLayout.addItem(spacerItem) + self.zoomOutButton = QtGui.QToolButton(printServiceOrderDialog) + self.zoomOutButton.setIcon( + build_icon(u':/general/general_zoom_out.png')) + self.zoomOutButton.setObjectName(u'zoomOutButton') + self.zoomButtonLayout.addWidget(self.zoomOutButton) + self.zoomInButton = QtGui.QToolButton(printServiceOrderDialog) + self.zoomInButton.setIcon(build_icon(u':/general/general_zoom_in.png')) + self.zoomInButton.setObjectName(u'zoomInButton') + self.zoomButtonLayout.addWidget(self.zoomInButton) + self.dialogLayout.addLayout(self.zoomButtonLayout, 1, 0, 1, 1) + self.retranslateUi(printServiceOrderDialog) + QtCore.QMetaObject.connectSlotsByName(printServiceOrderDialog) + + def retranslateUi(self, printServiceOrderDialog): + printServiceOrderDialog.setWindowTitle( + translate('OpenLP.PrintServiceOrderForm', 'Print Service Order')) + self.previewLabel.setText( + translate('OpenLP.ServiceManager', 'Preview:')) + self.printSlideTextCheckBox.setText(translate( + 'OpenLP.PrintServiceOrderForm', 'Include slide text if available')) + self.printNotesCheckBox.setText(translate( + 'OpenLP.PrintServiceOrderForm', 'Include service item notes')) + self.printMetaDataCheckBox.setText( + translate('OpenLP.PrintServiceOrderForm', + 'Include play length of media items')) + self.serviceTitleLabel.setText(translate( + 'OpenLP.PrintServiceOrderForm', 'Title:')) + self.serviceTitleLineEdit.setText(translate('OpenLP.ServiceManager', + 'Service Order Sheet')) + self.printButton.setText(translate('OpenLP.ServiceManager', 'Print')) + self.cancelButton.setText(translate('OpenLP.ServiceManager', 'Cancel')) + self.customNotesLabel.setText( + translate('OpenLP.ServiceManager', 'Custom Service Notes:')) diff --git a/openlp/core/ui/printserviceorderform.py b/openlp/core/ui/printserviceorderform.py new file mode 100644 index 000000000..3b01f9ac7 --- /dev/null +++ b/openlp/core/ui/printserviceorderform.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2011 Raoul Snyman # +# Portions copyright (c) 2008-2011 Tim Bentley, Jonathan Corwin, Michael # +# Gorven, Scott Guerrieri, Meinert Jordan, Andreas Preikschat, Christian # +# Richter, Philip Ridout, Maikel Stuivenberg, Martin Thompson, Jon Tibble, # +# Carsten Tinggaard, Frode Woldsund # +# --------------------------------------------------------------------------- # +# 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 datetime +import mutagen +import os + +from PyQt4 import QtCore, QtGui + +from openlp.core.lib import translate +from openlp.core.ui.printserviceorderdialog import Ui_PrintServiceOrderDialog + +class PrintServiceOrderForm(QtGui.QDialog, Ui_PrintServiceOrderDialog): + def __init__(self, parent, serviceManager): + """ + Constructor + """ + QtGui.QDialog.__init__(self, parent) + self.serviceManager = serviceManager + self.printer = QtGui.QPrinter() + self.printDialog = QtGui.QPrintDialog(self.printer, self) + self.document = QtGui.QTextDocument() + self.setupUi(self) + # Load the settings for the dialog. + settings = QtCore.QSettings() + settings.beginGroup(u'advanced') + self.printSlideTextCheckBox.setChecked(settings.value( + u'print slide text', QtCore.QVariant(False)).toBool()) + self.printMetaDataCheckBox.setChecked(settings.value( + u'print file meta data', QtCore.QVariant(False)).toBool()) + self.printNotesCheckBox.setChecked(settings.value( + u'print notes', QtCore.QVariant(False)).toBool()) + settings.endGroup() + # Signals + QtCore.QObject.connect(self.printButton, + QtCore.SIGNAL(u'clicked()'), self.printServiceOrder) + QtCore.QObject.connect(self.zoomOutButton, + QtCore.SIGNAL(u'clicked()'), self.zoomOut) + QtCore.QObject.connect(self.zoomInButton, + QtCore.SIGNAL(u'clicked()'), self.zoomIn) + QtCore.QObject.connect(self.previewWidget, + QtCore.SIGNAL(u'paintRequested(QPrinter *)'), self.paintRequested) + QtCore.QObject.connect(self.serviceTitleLineEdit, + QtCore.SIGNAL(u'textChanged(const QString)'), + self.updatePreviewText) + QtCore.QObject.connect(self.printSlideTextCheckBox, + QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) + QtCore.QObject.connect(self.printNotesCheckBox, + QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) + QtCore.QObject.connect(self.printMetaDataCheckBox, + QtCore.SIGNAL(u'stateChanged(int)'), self.updatePreviewText) + QtCore.QObject.connect(self.customNoteEdit, + QtCore.SIGNAL(u'textChanged()'), self.updatePreviewText) + QtCore.QObject.connect(self.cancelButton, + QtCore.SIGNAL(u'clicked()'), self.reject) + self.updatePreviewText() + + def updatePreviewText(self): + """ + Creates the html text and updates the html of *self.document*. + """ + text = u'' + if self.serviceTitleLineEdit.text(): + text += u'
' + slide[u'text'] + u'
' + elif item.is_image(): + # Add the image names of the service item. + text += u'%s
%s
' % item.foot_text + # Add service items' notes. + if self.printNotesCheckBox.isChecked(): + if item.notes: + text += u'%s
%s' % (translate( + 'OpenLP.ServiceManager', 'Notes:'), + item.notes.replace(u'\n', u'%s %s
' % (translate( + 'OpenLP.ServiceManager', u'Playing time:'), + unicode(datetime.timedelta(seconds=length))) + if self.customNoteEdit.toPlainText(): + text += u'' + slide[u'text'] + u'
' - elif item.is_image(): - # Add the image names of the service item. - text += u'%s
%s
' % item.foot_text - if item.notes: - # add notes - text += u'%s %s
' % (translate( - 'OpenLP.ServiceManager', 'Notes:'), item.notes) - serviceDocument = QtGui.QTextDocument() - serviceDocument.setHtml(text) - serviceDocument.print_(printDialog.printer()) + settingDialog = PrintServiceOrderForm(self.mainwindow, self) + settingDialog.exec_() diff --git a/resources/forms/printserviceorderdialog.ui b/resources/forms/printserviceorderdialog.ui new file mode 100644 index 000000000..131979b65 --- /dev/null +++ b/resources/forms/printserviceorderdialog.ui @@ -0,0 +1,206 @@ + +