From de940f7ca59f55d412b044836cad6ac749887da3 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Sat, 9 Oct 2010 21:20:07 +0200 Subject: [PATCH] first draft of new custom editor --- openlp/plugins/custom/forms/__init__.py | 1 + .../plugins/custom/forms/editcustomdialog.py | 176 +++++-------- openlp/plugins/custom/forms/editcustomform.py | 149 +++++------ .../custom/forms/editcustomslidedialog.py | 58 +++++ .../custom/forms/editcustomslideform.py | 74 ++++++ resources/forms/editcustomdialog.ui | 240 ++++++------------ 6 files changed, 344 insertions(+), 354 deletions(-) create mode 100644 openlp/plugins/custom/forms/editcustomslidedialog.py create mode 100644 openlp/plugins/custom/forms/editcustomslideform.py diff --git a/openlp/plugins/custom/forms/__init__.py b/openlp/plugins/custom/forms/__init__.py index 008caff8d..f31745e14 100644 --- a/openlp/plugins/custom/forms/__init__.py +++ b/openlp/plugins/custom/forms/__init__.py @@ -25,3 +25,4 @@ ############################################################################### from editcustomform import EditCustomForm +from editcustomslideform import EditCustomSlideForm diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 84a310cb9..fd5e244f2 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -36,106 +36,82 @@ class Ui_CustomEditDialog(object): build_icon(u':/icon/openlp.org-icon-32.bmp')) self.gridLayout = QtGui.QGridLayout(customEditDialog) self.gridLayout.setObjectName(u'gridLayout') + self.horizontalLayout_3 = QtGui.QHBoxLayout() + self.horizontalLayout_3.setObjectName(u'horizontalLayout_3') + self.themeLabel = QtGui.QLabel(customEditDialog) + self.themeLabel.setObjectName(u'themeLabel') + 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, 2, 0, 1, 1) + self.horizontalLayout_2 = QtGui.QHBoxLayout() + self.horizontalLayout_2.setObjectName(u'horizontalLayout_2') + self.creditLabel = QtGui.QLabel(customEditDialog) + self.creditLabel.setObjectName(u'creditLabel') + self.horizontalLayout_2.addWidget(self.creditLabel) + self.creditEdit = QtGui.QLineEdit(customEditDialog) + self.creditEdit.setObjectName(u'creditEdit') + self.horizontalLayout_2.addWidget(self.creditEdit) + self.gridLayout.addLayout(self.horizontalLayout_2, 3, 0, 1, 1) + self.buttonBox = QtGui.QDialogButtonBox(customEditDialog) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | + QtGui.QDialogButtonBox.Save) + self.buttonBox.setObjectName(u'buttonBox') + self.gridLayout.addWidget(self.buttonBox, 4, 0, 1, 1) + self.horizontalLayout_4 = QtGui.QHBoxLayout() + self.horizontalLayout_4.setObjectName(u'horizontalLayout_4') + self.verseListView = QtGui.QListWidget(customEditDialog) + self.verseListView.setAlternatingRowColors(True) + self.verseListView.setObjectName(u'verseListView') + self.horizontalLayout_4.addWidget(self.verseListView) + self.verticalLayout = QtGui.QVBoxLayout() + self.verticalLayout.setObjectName(u'verticalLayout') + self.addButton = QtGui.QPushButton(customEditDialog) + self.addButton.setObjectName(u'addButton') + self.verticalLayout.addWidget(self.addButton) + self.editButton = QtGui.QPushButton(customEditDialog) + self.editButton.setObjectName(u'editButton') + self.verticalLayout.addWidget(self.editButton) + self.editAllButton = QtGui.QPushButton(customEditDialog) + self.editAllButton.setObjectName(u'editAllButton') + self.verticalLayout.addWidget(self.editAllButton) + self.deleteButton = QtGui.QPushButton(customEditDialog) + self.deleteButton.setObjectName(u'deleteButton') + self.verticalLayout.addWidget(self.deleteButton) + spacerItem = QtGui.QSpacerItem(20, 128, QtGui.QSizePolicy.Minimum, + QtGui.QSizePolicy.Expanding) + self.verticalLayout.addItem(spacerItem) + self.upButton = QtGui.QPushButton(customEditDialog) + icon1 = QtGui.QIcon() + icon1.addPixmap(QtGui.QPixmap(u':/services/service_up.png'), + QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.upButton.setIcon(icon1) + self.upButton.setObjectName(u'upButton') + self.verticalLayout.addWidget(self.upButton) + self.downButton = QtGui.QPushButton(customEditDialog) + icon2 = QtGui.QIcon() + icon2.addPixmap(QtGui.QPixmap(u':/services/service_down.png'), + QtGui.QIcon.Normal, QtGui.QIcon.Off) + self.downButton.setIcon(icon2) + self.downButton.setObjectName(u'downButton') + self.verticalLayout.addWidget(self.downButton) + self.horizontalLayout_4.addLayout(self.verticalLayout) + self.gridLayout.addLayout(self.horizontalLayout_4, 1, 0, 1, 1) self.horizontalLayout = QtGui.QHBoxLayout() self.horizontalLayout.setObjectName(u'horizontalLayout') self.titleLabel = QtGui.QLabel(customEditDialog) self.titleLabel.setObjectName(u'titleLabel') self.horizontalLayout.addWidget(self.titleLabel) self.titleEdit = QtGui.QLineEdit(customEditDialog) - self.titleLabel.setBuddy(self.titleEdit) self.titleEdit.setObjectName(u'titleEdit') self.horizontalLayout.addWidget(self.titleEdit) self.gridLayout.addLayout(self.horizontalLayout, 0, 0, 1, 1) - self.horizontalLayout4 = QtGui.QHBoxLayout() - self.horizontalLayout4.setObjectName(u'horizontalLayout4') - self.verseListView = QtGui.QListWidget(customEditDialog) - self.verseListView.setAlternatingRowColors(True) - self.verseListView.setObjectName(u'verseListView') - self.horizontalLayout4.addWidget(self.verseListView) - self.verticalLayout = QtGui.QVBoxLayout() - self.verticalLayout.setObjectName(u'verticalLayout') - self.upButton = QtGui.QPushButton(customEditDialog) - self.upButton.setIcon(build_icon(u':/services/service_up.png')) - self.upButton.setObjectName(u'upButton') - self.verticalLayout.addWidget(self.upButton) - spacerItem = QtGui.QSpacerItem(20, 128, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.verticalLayout.addItem(spacerItem) - self.downButton = QtGui.QPushButton(customEditDialog) - self.downButton.setIcon(build_icon(u':/services/service_down.png')) - self.downButton.setObjectName(u'downButton') - self.verticalLayout.addWidget(self.downButton) - self.horizontalLayout4.addLayout(self.verticalLayout) - self.gridLayout.addLayout(self.horizontalLayout4, 1, 0, 1, 1) - self.editWidget = QtGui.QWidget(customEditDialog) - self.editWidget.setObjectName(u'editWidget') - self.editLayout3 = QtGui.QHBoxLayout(self.editWidget) - self.editLayout3.setSpacing(8) - self.editLayout3.setMargin(0) - self.editLayout3.setObjectName(u'editLayout3') - self.verseTextEdit = SpellTextEdit(self) - self.verseTextEdit.setObjectName(u'verseTextEdit') - self.editLayout3.addWidget(self.verseTextEdit) - self.buttonWidget = QtGui.QWidget(self.editWidget) - self.buttonWidget.setObjectName(u'buttonWidget') - self.verticalLayout2 = QtGui.QVBoxLayout(self.buttonWidget) - self.verticalLayout2.setObjectName(u'verticalLayout2') - self.addButton = QtGui.QPushButton(self.buttonWidget) - self.addButton.setObjectName(u'addButton') - self.verticalLayout2.addWidget(self.addButton) - self.editButton = QtGui.QPushButton(self.buttonWidget) - self.editButton.setObjectName(u'editButton') - self.verticalLayout2.addWidget(self.editButton) - self.editAllButton = QtGui.QPushButton(self.buttonWidget) - self.editAllButton.setObjectName(u'editAllButton') - self.verticalLayout2.addWidget(self.editAllButton) - self.saveButton = QtGui.QPushButton(self.buttonWidget) - self.saveButton.setObjectName(u'saveButton') - self.verticalLayout2.addWidget(self.saveButton) - self.deleteButton = QtGui.QPushButton(self.buttonWidget) - self.deleteButton.setObjectName(u'deleteButton') - self.verticalLayout2.addWidget(self.deleteButton) - self.clearButton = QtGui.QPushButton(self.buttonWidget) - self.clearButton.setObjectName(u'clearButton') - self.verticalLayout2.addWidget(self.clearButton) - self.splitButton = QtGui.QPushButton(self.buttonWidget) - self.splitButton.setObjectName(u'splitButton') - self.verticalLayout2.addWidget(self.splitButton) - spacerItem1 = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, - QtGui.QSizePolicy.Expanding) - self.verticalLayout2.addItem(spacerItem1) - self.editLayout3.addWidget(self.buttonWidget) - self.gridLayout.addWidget(self.editWidget, 2, 0, 1, 1) - self.horizontalLayout3 = QtGui.QHBoxLayout() - self.horizontalLayout3.setObjectName(u'horizontalLayout3') - self.themeLabel = QtGui.QLabel(customEditDialog) - self.themeLabel.setObjectName(u'themeLabel') - self.horizontalLayout3.addWidget(self.themeLabel) - self.themeComboBox = QtGui.QComboBox(customEditDialog) - self.themeLabel.setBuddy(self.themeComboBox) - self.themeComboBox.setObjectName(u'themeComboBox') - self.horizontalLayout3.addWidget(self.themeComboBox) - self.gridLayout.addLayout(self.horizontalLayout3, 3, 0, 1, 1) - self.horizontalLayout2 = QtGui.QHBoxLayout() - self.horizontalLayout2.setObjectName(u'horizontalLayout2') - self.creditLabel = QtGui.QLabel(customEditDialog) - self.creditLabel.setObjectName(u'creditLabel') - self.horizontalLayout2.addWidget(self.creditLabel) - self.creditEdit = QtGui.QLineEdit(customEditDialog) - self.creditLabel.setBuddy(self.creditEdit) - self.creditEdit.setObjectName(u'creditEdit') - self.horizontalLayout2.addWidget(self.creditEdit) - self.gridLayout.addLayout(self.horizontalLayout2, 4, 0, 1, 1) - self.buttonBox = QtGui.QDialogButtonBox(customEditDialog) - self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel | - QtGui.QDialogButtonBox.Save) - self.buttonBox.setObjectName(u'buttonBox') - self.gridLayout.addWidget(self.buttonBox, 5, 0, 1, 1) self.retranslateUi(customEditDialog) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), customEditDialog.accept) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), - customEditDialog.closePressed) + customEditDialog.close) QtCore.QMetaObject.connectSlotsByName(customEditDialog) def retranslateUi(self, customEditDialog): @@ -143,46 +119,32 @@ class Ui_CustomEditDialog(object): translate('CustomPlugin.EditCustomForm', 'Edit Custom Slides')) self.upButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Move slide up one ' - 'position.')) + 'position.')) self.downButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Move slide down one ' - 'position.')) + 'position.')) self.titleLabel.setText( translate('CustomPlugin.EditCustomForm', '&Title:')) self.addButton.setText( translate('CustomPlugin.EditCustomForm', 'Add New')) self.addButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Add a new slide at ' - 'bottom.')) + 'bottom.')) self.editButton.setText( translate('CustomPlugin.EditCustomForm', 'Edit')) self.editButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Edit the selected ' - 'slide.')) + 'slide.')) self.editAllButton.setText( translate('CustomPlugin.EditCustomForm', 'Edit All')) self.editAllButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Edit all the slides at ' - 'once.')) - self.saveButton.setText( - translate('CustomPlugin.EditCustomForm', 'Save')) - self.saveButton.setToolTip( - translate('CustomPlugin.EditCustomForm', 'Save the slide currently ' - 'being edited.')) + 'once.')) self.deleteButton.setText( translate('CustomPlugin.EditCustomForm', 'Delete')) self.deleteButton.setToolTip( translate('CustomPlugin.EditCustomForm', 'Delete the selected ' - 'slide.')) - self.clearButton.setText( - translate('CustomPlugin.EditCustomForm', 'Clear')) - self.clearButton.setToolTip( - translate('CustomPlugin.EditCustomForm', 'Clear edit area')) - self.splitButton.setText( - translate('CustomPlugin.EditCustomForm', 'Split Slide')) - self.splitButton.setToolTip( - translate('CustomPlugin.EditCustomForm', 'Split a slide into two ' - 'by inserting a slide splitter.')) + 'slide.')) self.themeLabel.setText( translate('CustomPlugin.EditCustomForm', 'The&me:')) self.creditLabel.setText( diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index d412287aa..18ab98d45 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -32,6 +32,7 @@ from openlp.core.lib import Receiver, translate from openlp.plugins.custom.lib import CustomXMLBuilder, CustomXMLParser from openlp.plugins.custom.lib.db import CustomSlide from editcustomdialog import Ui_CustomEditDialog +from editcustomslideform import EditCustomSlideForm log = logging.getLogger(__name__) @@ -40,7 +41,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): Class documentation goes here. """ log.info(u'Custom Editor loaded') - def __init__(self, custommanager, parent = None): + def __init__(self, custommanager, parent=None): """ Constructor """ @@ -61,21 +62,12 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): 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.splitButton, - QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed) - QtCore.QObject.connect(self.verseListView, - QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), - self.onVerseListViewSelected) QtCore.QObject.connect(self.verseListView, QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), self.onVerseListViewPressed) @@ -83,30 +75,19 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): QtCore.SIGNAL(u'theme_update_list'), self.loadThemes) # Create other objects and forms. self.custommanager = custommanager + self.slide_form = EditCustomSlideForm(self) self.initialise() - def onPreview(self, button): - log.debug(u'onPreview') - if button.text() == unicode(translate('CustomPlugin.EditCustomForm', - 'Save && Preview')) and self.saveCustom(): - Receiver.send_message(u'custom_preview') - def initialise(self): - self.editAll = False self.addButton.setEnabled(True) self.deleteButton.setEnabled(False) self.editButton.setEnabled(False) self.editAllButton.setEnabled(True) - self.saveButton.setEnabled(False) - self.clearButton.setEnabled(False) - self.splitButton.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'') def loadThemes(self, themelist): self.themeComboBox.clear() @@ -198,37 +179,41 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.verseListView.insertItem(selectedRow + 1, qw) self.verseListView.setCurrentRow(selectedRow + 1) - def onClearButtonPressed(self): - #TODO: enable the "big" save button. - self.verseTextEdit.clear() - self.editAll = False - self.addButton.setEnabled(True) - self.editAllButton.setEnabled(True) - self.saveButton.setEnabled(False) + def onPreview(self, button): + log.debug(u'onPreview') + if button.text() == unicode(translate('CustomPlugin.EditCustomForm', + 'Save && Preview')) and self.saveCustom(): + Receiver.send_message(u'custom_preview') def onVerseListViewPressed(self, item): self.deleteButton.setEnabled(True) self.editButton.setEnabled(True) - def onVerseListViewSelected(self, item): - self.editText(item.text()) + def onDeleteButtonPressed(self): + self.verseListView.takeItem(self.verseListView.currentRow()) + self.editButton.setEnabled(True) + self.editAllButton.setEnabled(True) + if self.verseListView.count() == 0: + self.deleteButton.setEnabled(False) + self.editButton.setEnabled(False) + self.editAllButton.setEnabled(False) def onAddButtonPressed(self): - #TODO: enable the "big" save button. - self.verseListView.addItem(self.verseTextEdit.toPlainText()) - self.editAllButton.setEnabled(True) - self.deleteButton.setEnabled(False) - self.verseTextEdit.clear() + self.slide_form.setText(u'') + if self.slide_form.exec_(): + for slide in self.slide_form.getText(): + self.verseListView.addItem(slide) + self.editAllButton.setEnabled(True) def onEditButtonPressed(self): - #TODO: disable the "big" save button. - self.editText(self.verseListView.currentItem().text()) + self.slide_form.setText(self.verseListView.currentItem().text()) + if self.slide_form.exec_(): + self.updateVerseList(self.slide_form.getText()) def onEditAllButtonPressed(self): - #TODO: disable the "big" save button. - self.editAll = True - self.addButton.setEnabled(False) - self.splitButton.setEnabled(True) + """ + Edits all slides. + """ if self.verseListView.count() > 0: verse_list = u'' for row in range(0, self.verseListView.count()): @@ -236,58 +221,41 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): verse_list += item.text() if row != self.verseListView.count() - 1: verse_list += u'\n[---]\n' - self.editText(verse_list) + self.slide_form.setText(verse_list) + if self.slide_form.exec_(): + self.updateVerseList(self.slide_form.getText(), True) - 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 updateVerseList(self, slides, edit_all=False): + """ + Updates the verse list (self.verseListView) after editing slides. - def onSaveButtonPressed(self): - #TODO: enable the "big" save button. - if self.editAll: - self.verseListView.clear() - for row in unicode(self.verseTextEdit.toPlainText()).split( - u'\n[---]\n'): - self.verseListView.addItem(row) + ``slides`` + A list of all slides which have been edited. + + ``edit_all`` + Indicates if all slides or only one slide has been edited. + """ + if len(slides) == 1: + self.verseListView.currentItem().setText(slides[0]) else: - self.verseListView.currentItem().setText( - self.verseTextEdit.toPlainText()) - # The number of lines has changed. - 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 edit_all: 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.splitButton.setEnabled(False) - self.verseTextEdit.clear() - - def onSplitButtonPressed(self): - if self.verseTextEdit.textCursor().columnNumber() != 0: - self.verseTextEdit.insertPlainText(u'\n') - self.verseTextEdit.insertPlainText(u'[---]\n' ) - self.verseTextEdit.setFocus() - - def onDeleteButtonPressed(self): - #TODO: make sure the "big" save button is disabled if no slides. - self.verseListView.takeItem(self.verseListView.currentRow()) - self.editButton.setEnabled(False) - self.editAllButton.setEnabled(True) - if self.verseListView.count() == 0: - self.deleteButton.setEnabled(False) - self.editAllButton.setEnabled(False) + for slide in slides: + self.verseListView.addItem(slide) + else: + old_slides = [] + old_row = self.verseListView.currentRow() + # Create a list with all slide (unedited). + old_slides = [self.verseListView.item(row).text() for row in \ + range(0, self.verseListView.count())] + self.verseListView.clear() + old_slides.pop(old_row) + # Insert all slides in the old_slides list, to make the list complete. + for slide in slides: + old_slides.insert(old_row, slide) + for slide in old_slides: + self.verseListView.addItem(slide) + self.verseListView.repaint() def _validate(self): """ @@ -300,7 +268,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): 'You need to type in a title.') # We must have one slide. if self.verseListView.count() == 0: - self.verseTextEdit.setFocus() return False, translate('CustomPlugin.EditCustomForm', 'You need to add at least one slide') return True, u'' diff --git a/openlp/plugins/custom/forms/editcustomslidedialog.py b/openlp/plugins/custom/forms/editcustomslidedialog.py new file mode 100644 index 000000000..bc6657d90 --- /dev/null +++ b/openlp/plugins/custom/forms/editcustomslidedialog.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 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 translate + +class Ui_CustomSlideEditDialog(object): + def setupUi(self, customSlideEditDialog): + customSlideEditDialog.setObjectName(u'customSlideEditDialog') + customSlideEditDialog.resize(474, 442) + self.buttonBox = QtGui.QDialogButtonBox(customSlideEditDialog) + self.buttonBox.setGeometry(QtCore.QRect(8, 407, 458, 32)) + self.buttonBox.setOrientation(QtCore.Qt.Horizontal) + self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Save) + self.buttonBox.setObjectName(u'buttonBox') + self.verseTextEdit = QtGui.QTextEdit(customSlideEditDialog) + self.verseTextEdit.setGeometry(QtCore.QRect(8, 8, 451, 341)) + self.verseTextEdit.setObjectName(u'verseTextEdit') + self.splitButton = QtGui.QPushButton(customSlideEditDialog) + self.splitButton.setGeometry(QtCore.QRect(370, 360, 85, 27)) + self.splitButton.setObjectName(u'splitButton') + self.retranslateUi(customSlideEditDialog) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'accepted()'), + customSlideEditDialog.accept) + QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL(u'rejected()'), + customSlideEditDialog.reject) + QtCore.QMetaObject.connectSlotsByName(customSlideEditDialog) + + def retranslateUi(self, customSlideEditDialog): + self.splitButton.setText( + translate('CustomPlugin.EditCustomForm', 'Split Slide')) + self.splitButton.setToolTip( + translate('CustomPlugin.EditCustomForm', 'Split a slide into two ' + 'by inserting a slide splitter.')) diff --git a/openlp/plugins/custom/forms/editcustomslideform.py b/openlp/plugins/custom/forms/editcustomslideform.py new file mode 100644 index 000000000..b43287b99 --- /dev/null +++ b/openlp/plugins/custom/forms/editcustomslideform.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +# vim: autoindent shiftwidth=4 expandtab textwidth=80 tabstop=4 softtabstop=4 + +############################################################################### +# OpenLP - Open Source Lyrics Projection # +# --------------------------------------------------------------------------- # +# Copyright (c) 2008-2010 Raoul Snyman # +# Portions copyright (c) 2008-2010 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 F################################OR 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 QtCore, QtGui + +from openlp.core.lib import Receiver, translate +from editcustomslidedialog import Ui_CustomSlideEditDialog + +log = logging.getLogger(__name__) + +class EditCustomSlideForm(QtGui.QDialog, Ui_CustomSlideEditDialog): + """ + Class documentation goes here. + """ + log.info(u'Custom Verse Editor loaded') + def __init__(self, parent=None): + """ + Constructor + """ + QtGui.QDialog.__init__(self, parent) + self.setupUi(self) + # Connecting signals and slots + QtCore.QObject.connect(self.splitButton, + QtCore.SIGNAL(u'pressed()'), self.onSplitButtonPressed) + + + def setText(self, text): + """ + Set the text for verseTextEdit. + + ``text`` + The text (unicode). + """ + self.verseTextEdit.clear() + if text: + self.verseTextEdit.setPlainText(text) + self.verseTextEdit.setFocus() + + def getText(self): + """ + Returns a list with all slides. + """ + return self.verseTextEdit.toPlainText().split(u'\n[---]\n') + + def onSplitButtonPressed(self): + if self.verseTextEdit.textCursor().columnNumber() != 0: + self.verseTextEdit.insertPlainText(u'\n') + self.verseTextEdit.insertPlainText(u'[---]\n' ) + self.verseTextEdit.setFocus() diff --git a/resources/forms/editcustomdialog.ui b/resources/forms/editcustomdialog.ui index 44ce46ca7..7c714baab 100644 --- a/resources/forms/editcustomdialog.ui +++ b/resources/forms/editcustomdialog.ui @@ -18,20 +18,48 @@ :/icon/openlp.org-icon-32.bmp:/icon/openlp.org-icon-32.bmp - - + + - + - Title: + Theme: - + + + + + + + + + + + Credits: + + + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Save + + + @@ -44,16 +72,42 @@ - + - + - + Add New - - - :/services/service_up.png:/services/service_up.png + + + + + + + + + Edit + + + + + + + + + + Edit All + + + + + + + + + + Delete @@ -70,6 +124,20 @@ + + + + + + + + + + + :/services/service_up.png:/services/service_up.png + + + @@ -88,166 +156,26 @@ - - - - - 8 - - - 0 - - - - - - - - - - - - - - Add New - - - - - - - - - - Edit - - - - - - - - - - Edit All - - - - - - - - - - Save - - - - - - - - - - Delete - - - - - - - - - - Clear - - - - - - - - - - Split Slide - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - + + - + - Theme: + Title: - - - - - + - - - - - - Credits: - - - - - - - - - - - - - - - QDialogButtonBox::Cancel|QDialogButtonBox::Save - - - TitleEdit - VerseTextEdit - AddButton VerseListView - EditButton - EditAllButton - SaveButton - DeleteButton CreditEdit - UpButton - DownButton ThemeComboBox