From ead4f958356d9b5d3fe080bcc38e483a3074c0c6 Mon Sep 17 00:00:00 2001 From: Andreas Preikschat Date: Fri, 4 Feb 2011 19:51:20 +0100 Subject: [PATCH] --- .../plugins/custom/forms/editcustomdialog.py | 9 ++ openlp/plugins/custom/forms/editcustomform.py | 136 +++++++++--------- 2 files changed, 81 insertions(+), 64 deletions(-) diff --git a/openlp/plugins/custom/forms/editcustomdialog.py b/openlp/plugins/custom/forms/editcustomdialog.py index 75717c082..542f41410 100644 --- a/openlp/plugins/custom/forms/editcustomdialog.py +++ b/openlp/plugins/custom/forms/editcustomdialog.py @@ -59,20 +59,24 @@ class Ui_CustomEditDialog(object): self.addButton.setObjectName(u'addButton') self.buttonLayout.addWidget(self.addButton) self.editButton = QtGui.QPushButton(customEditDialog) + self.editButton.setEnabled(False) self.editButton.setObjectName(u'editButton') self.buttonLayout.addWidget(self.editButton) self.editAllButton = QtGui.QPushButton(customEditDialog) self.editAllButton.setObjectName(u'editAllButton') self.buttonLayout.addWidget(self.editAllButton) self.deleteButton = QtGui.QPushButton(customEditDialog) + self.deleteButton.setEnabled(False) self.deleteButton.setObjectName(u'deleteButton') self.buttonLayout.addWidget(self.deleteButton) self.buttonLayout.addStretch() self.upButton = QtGui.QPushButton(customEditDialog) + self.upButton.setEnabled(False) self.upButton.setIcon(build_icon(u':/services/service_up.png')) self.upButton.setObjectName(u'upButton') self.buttonLayout.addWidget(self.upButton) self.downButton = QtGui.QPushButton(customEditDialog) + self.downButton.setEnabled(False) self.downButton.setIcon(build_icon(u':/services/service_down.png')) self.downButton.setObjectName(u'downButton') self.buttonLayout.addWidget(self.downButton) @@ -95,6 +99,9 @@ class Ui_CustomEditDialog(object): self.bottomFormLayout.addRow(self.creditLabel, self.creditEdit) self.dialogLayout.addLayout(self.bottomFormLayout) self.buttonBox = save_cancel_button_box(customEditDialog) + self.previewButton = QtGui.QPushButton() + self.buttonBox.addButton( + self.previewButton, QtGui.QDialogButtonBox.ActionRole) self.dialogLayout.addWidget(self.buttonBox) self.retranslateUi(customEditDialog) QtCore.QMetaObject.connectSlotsByName(customEditDialog) @@ -134,3 +141,5 @@ class Ui_CustomEditDialog(object): translate('CustomPlugin.EditCustomForm', 'The&me:')) self.creditLabel.setText( translate('CustomPlugin.EditCustomForm', '&Credits:')) + self.previewButton.setText( + translate('CustomPlugin.EditCustomForm', 'Save && Preview')) diff --git a/openlp/plugins/custom/forms/editcustomform.py b/openlp/plugins/custom/forms/editcustomform.py index e8dfa20aa..c5a31c5ad 100644 --- a/openlp/plugins/custom/forms/editcustomform.py +++ b/openlp/plugins/custom/forms/editcustomform.py @@ -48,14 +48,12 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): """ QtGui.QDialog.__init__(self, parent) self.setupUi(self) + # Create other objects and forms. + self.manager = manager + self.editSlideForm = EditCustomSlideForm(self) # Connecting signals and slots - self.previewButton = QtGui.QPushButton() - self.previewButton.setText( - translate('CustomPlugin.EditCustomForm', 'Save && Preview')) - self.buttonBox.addButton( - self.previewButton, QtGui.QDialogButtonBox.ActionRole) - QtCore.QObject.connect(self.buttonBox, - QtCore.SIGNAL(u'clicked(QAbstractButton*)'), self.onPreview) + QtCore.QObject.connect(self.previewButton, + QtCore.SIGNAL(u'pressed()'), self.onPreviewButtonPressed) QtCore.QObject.connect(self.addButton, QtCore.SIGNAL(u'pressed()'), self.onAddButtonPressed) QtCore.QObject.connect(self.editButton, @@ -68,32 +66,10 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed) QtCore.QObject.connect(self.downButton, QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed) - QtCore.QObject.connect(self.slideListView, - QtCore.SIGNAL(u'itemClicked(QListWidgetItem*)'), - self.onSlideListViewPressed) QtCore.QObject.connect(Receiver.get_receiver(), QtCore.SIGNAL(u'theme_update_list'), self.loadThemes) - # Create other objects and forms. - self.manager = manager - self.editSlideForm = 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.addButton.setEnabled(True) - self.deleteButton.setEnabled(False) - self.editButton.setEnabled(False) - self.editAllButton.setEnabled(True) - self.titleEdit.setText(u'') - self.creditEdit.setText(u'') - self.slideListView.clear() - # Make sure we have a new item. - self.customSlide = CustomSlide() + QtCore.QObject.connect(self.slideListView, + QtCore.SIGNAL(u'currentRowChanged(int)'), self.onCurrentRowChanged) def loadThemes(self, themelist): self.themeComboBox.clear() @@ -112,9 +88,13 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): States whether the custom is edited while being previewed in the preview panel. """ - self.customSlide = CustomSlide() - self.initialise() - if id != 0: + self.slideListView.clear() + if id == 0: + self.customSlide = CustomSlide() + self.titleEdit.setText(u'') + self.creditEdit.setText(u'') + self.themeComboBox.setCurrentIndex(0) + else: self.customSlide = self.manager.get_object(CustomSlide, id) self.titleEdit.setText(self.customSlide.title) self.creditEdit.setText(self.customSlide.credits) @@ -128,9 +108,6 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): if id == -1: id = 0 self.themeComboBox.setCurrentIndex(id) - else: - self.themeComboBox.setCurrentIndex(0) - self.editAllButton.setEnabled(False) # If not preview hide the preview button. self.previewButton.setVisible(False) if preview: @@ -150,9 +127,7 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): """ Saves the custom. """ - valid, message = self._validate() - if not valid: - critical_error_message_box(message=message) + if not self._validate(): return False sxml = CustomXMLBuilder() sxml.new_document() @@ -183,16 +158,11 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.slideListView.insertItem(selectedRow + 1, qw) self.slideListView.setCurrentRow(selectedRow + 1) - def onSlideListViewPressed(self, item): - self.deleteButton.setEnabled(True) - self.editButton.setEnabled(True) - def onAddButtonPressed(self): self.editSlideForm.setText(u'') if self.editSlideForm.exec_(): for slide in self.editSlideForm.getText(): self.slideListView.addItem(slide) - self.editAllButton.setEnabled(True) def onEditButtonPressed(self): self.editSlideForm.setText(self.slideListView.currentItem().text()) @@ -203,16 +173,23 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): """ Edits all slides. """ - if self.slideListView.count() > 0: - slide_list = u'' - for row in range(0, self.slideListView.count()): - item = self.slideListView.item(row) - slide_list += item.text() - if row != self.slideListView.count() - 1: - slide_list += u'\n[---]\n' - self.editSlideForm.setText(slide_list) - if self.editSlideForm.exec_(): - self.updateSlideList(self.editSlideForm.getText(), True) + slide_list = u'' + for row in range(0, self.slideListView.count()): + item = self.slideListView.item(row) + slide_list += item.text() + if row != self.slideListView.count() - 1: + slide_list += u'\n[---]\n' + self.editSlideForm.setText(slide_list) + if self.editSlideForm.exec_(): + self.updateSlideList(self.editSlideForm.getText(), True) + + def onPreviewButtonPressed(self): + """ + Save the custom item and preview it. + """ + log.debug(u'onPreview') + if self.saveCustom(): + Receiver.send_message(u'custom_preview') def updateSlideList(self, slides, edit_all=False): """ @@ -244,13 +221,40 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): self.slideListView.repaint() def onDeleteButtonPressed(self): + """ + Removes the current row from the list. + """ self.slideListView.takeItem(self.slideListView.currentRow()) - self.editButton.setEnabled(True) - self.editAllButton.setEnabled(True) - if self.slideListView.count() == 0: + if self.slideListView.currentRow() == 0: + self.upButton.setEnabled(False) + if self.slideListView.currentRow() == self.slideListView.count(): + self.downButton.setEnabled(False) + + def onCurrentRowChanged(self, row): + """ + Called when the *slideListView*'s current row has been changed. This + enables or disables buttons which require an slide to act on. + + ``row`` + The row (int). If there is no current row, the value is -1. + """ + if row == -1: self.deleteButton.setEnabled(False) self.editButton.setEnabled(False) - self.editAllButton.setEnabled(False) + self.upButton.setEnabled(False) + self.downButton.setEnabled(False) + else: + self.deleteButton.setEnabled(True) + self.editButton.setEnabled(True) + # Decide if the up/down buttons should be enabled or not. + if self.slideListView.count() - 1 == row: + self.downButton.setEnabled(False) + else: + self.downButton.setEnabled(True) + if row == 0: + self.upButton.setEnabled(False) + else: + self.upButton.setEnabled(True) def _validate(self): """ @@ -259,10 +263,14 @@ class EditCustomForm(QtGui.QDialog, Ui_CustomEditDialog): # We must have a title. if len(self.titleEdit.displayText()) == 0: self.titleEdit.setFocus() - return False, translate('CustomPlugin.EditCustomForm', - 'You need to type in a title.') + critical_error_message_box( + message=translate('CustomPlugin.EditCustomForm', + 'You need to type in a title.')) + return False # We must have at least one slide. if self.slideListView.count() == 0: - return False, translate('CustomPlugin.EditCustomForm', - 'You need to add at least one slide') - return True, u'' + critical_error_message_box( + message=translate('CustomPlugin.EditCustomForm', + 'You need to add at least one slide')) + return False + return True