Merge lp:~trb143/openlp/bugfixes into lp:openlp

Proposed by Tim Bentley
Status: Merged
Merged at revision: not available
Proposed branch: lp:~trb143/openlp/bugfixes
Merge into: lp:openlp
Diff against target: None lines
To merge this branch: bzr merge lp:~trb143/openlp/bugfixes
Reviewer Review Type Date Requested Status
Raoul Snyman Approve
Review via email: mp+11461@code.launchpad.net

This proposal supersedes a proposal from 2009-09-09.

To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) wrote : Posted in a previous version of this proposal

Code Completion time.
Fix Songs so adding or removing lines is verses is correct in main up
Fix Custom so adding or removing lines is verses is correct in main up
Clean up Custom error handling to new colourless standards.

Revision history for this message
Raoul Snyman (raoul-snyman) :
review: Approve
lp:~trb143/openlp/bugfixes updated
528. By Tim Bentley

Song and Custom cleanups

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'openlp/plugins/custom/forms/editcustomform.py'
--- openlp/plugins/custom/forms/editcustomform.py 2009-08-25 20:04:58 +0000
+++ openlp/plugins/custom/forms/editcustomform.py 2009-09-09 18:09:17 +0000
@@ -20,7 +20,7 @@
20from PyQt4 import Qt, QtCore, QtGui20from PyQt4 import Qt, QtCore, QtGui
2121
22from editcustomdialog import Ui_customEditDialog22from editcustomdialog import Ui_customEditDialog
23from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver23from openlp.core.lib import SongXMLBuilder, SongXMLParser, Receiver, translate
24from openlp.plugins.custom.lib.models import CustomSlide24from openlp.plugins.custom.lib.models import CustomSlide
2525
26class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):26class EditCustomForm(QtGui.QDialog, Ui_customEditDialog):
@@ -44,7 +44,6 @@
44 QtCore.QObject.connect(self.ClearButton, QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed)44 QtCore.QObject.connect(self.ClearButton, QtCore.SIGNAL(u'pressed()'), self.onClearButtonPressed)
45 QtCore.QObject.connect(self.UpButton, QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed)45 QtCore.QObject.connect(self.UpButton, QtCore.SIGNAL(u'pressed()'), self.onUpButtonPressed)
46 QtCore.QObject.connect(self.DownButton, QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed)46 QtCore.QObject.connect(self.DownButton, QtCore.SIGNAL(u'pressed()'), self.onDownButtonPressed)
47 QtCore.QObject.connect(self.TitleEdit, QtCore.SIGNAL(u'lostFocus()'), self.validate)
4847
49 QtCore.QObject.connect(self.VerseListView,48 QtCore.QObject.connect(self.VerseListView,
50 QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), self.onVerseListViewSelected)49 QtCore.SIGNAL(u'itemDoubleClicked(QListWidgetItem*)'), self.onVerseListViewSelected)
@@ -92,25 +91,29 @@
92 if id == -1:91 if id == -1:
93 id = 0 # Not Found92 id = 0 # Not Found
94 self.ThemecomboBox.setCurrentIndex(id)93 self.ThemecomboBox.setCurrentIndex(id)
95 self.validate()
96 else:94 else:
97 self.ThemecomboBox.setCurrentIndex(0)95 self.ThemecomboBox.setCurrentIndex(0)
9896
99 def accept(self):97 def accept(self):
100 if self.validate():98 valid , message = self._validate()
101 sxml=SongXMLBuilder()99 if not valid:
102 sxml.new_document()100 QtGui.QMessageBox.critical(self,
103 sxml.add_lyrics_to_song()101 translate(u'customEditDialog', u'Error'), message,
104 count = 1102 QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok))
105 for i in range (0, self.VerseListView.count()):103 return
106 sxml.add_verse_to_lyrics(u'custom', unicode(count), unicode(self.VerseListView.item(i).text()))104 sxml=SongXMLBuilder()
107 count += 1105 sxml.new_document()
108 self.customSlide.title = unicode(self.TitleEdit.displayText())106 sxml.add_lyrics_to_song()
109 self.customSlide.text = unicode(sxml.extract_xml())107 count = 1
110 self.customSlide.credits = unicode(self.CreditEdit.displayText())108 for i in range (0, self.VerseListView.count()):
111 self.customSlide.theme_name = unicode(self.ThemecomboBox.currentText())109 sxml.add_verse_to_lyrics(u'custom', unicode(count), unicode(self.VerseListView.item(i).text()))
112 self.custommanager.save_slide(self.customSlide)110 count += 1
113 self.close()111 self.customSlide.title = unicode(self.TitleEdit.displayText())
112 self.customSlide.text = unicode(sxml.extract_xml())
113 self.customSlide.credits = unicode(self.CreditEdit.displayText())
114 self.customSlide.theme_name = unicode(self.ThemecomboBox.currentText())
115 self.custommanager.save_slide(self.customSlide)
116 self.close()
114117
115 def rejected(self):118 def rejected(self):
116 self.close()119 self.close()
@@ -138,25 +141,34 @@
138 self.EditButton.setEnabled(True)141 self.EditButton.setEnabled(True)
139142
140 def onVerseListViewSelected(self, item):143 def onVerseListViewSelected(self, item):
141 self.VerseTextEdit.setPlainText(item.text())144 self.editText(item.text())
142 self.DeleteButton.setEnabled(False)
143 self.EditButton.setEnabled(False)
144 self.SaveButton.setEnabled(True)
145145
146 def onAddButtonPressed(self):146 def onAddButtonPressed(self):
147 self.VerseListView.addItem(self.VerseTextEdit.toPlainText())147 self.VerseListView.addItem(self.VerseTextEdit.toPlainText())
148 self.DeleteButton.setEnabled(False)148 self.DeleteButton.setEnabled(False)
149 self.VerseTextEdit.clear()149 self.VerseTextEdit.clear()
150 self.validate()
151150
152 def onEditButtonPressed(self):151 def onEditButtonPressed(self):
153 self.VerseTextEdit.setPlainText(self.VerseListView.currentItem().text())152 self.editText(self.VerseListView.currentItem().text())
153
154 def editText(self, text):
155 self.beforeText = text
156 self.VerseTextEdit.setPlainText(text)
154 self.DeleteButton.setEnabled(False)157 self.DeleteButton.setEnabled(False)
155 self.EditButton.setEnabled(False)158 self.EditButton.setEnabled(False)
156 self.SaveButton.setEnabled(True)159 self.SaveButton.setEnabled(True)
157160
158 def onSaveButtonPressed(self):161 def onSaveButtonPressed(self):
159 self.VerseListView.currentItem().setText(self.VerseTextEdit.toPlainText())162 self.VerseListView.currentItem().setText(self.VerseTextEdit.toPlainText())
163 #number of lines has change
164 if len(self.beforeText.split(u'\n')) != len(self.VerseTextEdit.toPlainText().split(u'\n')):
165 tempList = {}
166 for row in range(0, self.VerseListView.count()):
167 tempList[row] = self.VerseListView.item(row).text()
168 self.VerseListView.clear()
169 for row in range (0, len(tempList)):
170 self.VerseListView.addItem(tempList[row])
171 self.VerseListView.repaint()
160 self.SaveButton.setEnabled(False)172 self.SaveButton.setEnabled(False)
161 self.EditButton.setEnabled(False)173 self.EditButton.setEnabled(False)
162174
@@ -164,17 +176,14 @@
164 self.VerseListView.takeItem(self.VerseListView.currentRow())176 self.VerseListView.takeItem(self.VerseListView.currentRow())
165 self.EditButton.setEnabled(False)177 self.EditButton.setEnabled(False)
166178
167 def validate(self):179 def _validate(self):
168 valid = True180 valid = True
181 message = u''
169 if len(self.TitleEdit.displayText()) == 0:182 if len(self.TitleEdit.displayText()) == 0:
170 valid = False183 valid = False
171 self.TitleEdit.setStyleSheet(u'background-color: red; color: white')184 message = translate(u'customEditDialog', u'You need to enter a title \n')
172 else:
173 self.TitleEdit.setStyleSheet(u'')
174 # must have 1 slide185 # must have 1 slide
175 if self.VerseListView.count() == 0:186 if self.VerseListView.count() == 0:
176 valid = False187 valid = False
177 self.VerseListView.setStyleSheet(u'background-color: red; color: white')188 message += translate(u'customEditDialog', u'You need to enter a slide \n')
178 else:189 return valid, message
179 self.VerseListView.setStyleSheet(u'')
180 return valid
181190
=== modified file 'openlp/plugins/songs/forms/editsongform.py'
--- openlp/plugins/songs/forms/editsongform.py 2009-09-05 08:58:29 +0000
+++ openlp/plugins/songs/forms/editsongform.py 2009-09-09 18:09:17 +0000
@@ -282,9 +282,20 @@
282 def onVerseEditButtonClicked(self):282 def onVerseEditButtonClicked(self):
283 item = self.VerseListWidget.currentItem()283 item = self.VerseListWidget.currentItem()
284 if item is not None:284 if item is not None:
285 self.verse_form.setVerse(item.text())285 tempText = item.text()
286 self.verse_form.setVerse(tempText)
286 self.verse_form.exec_()287 self.verse_form.exec_()
287 item.setText(self.verse_form.getVerse())288 afterText = self.verse_form.getVerse()
289 item.setText(afterText)
290 #number of lines has change
291 if len(tempText.split(u'\n')) != len(afterText.split(u'\n')):
292 tempList = {}
293 for row in range(0, self.VerseListWidget.count()):
294 tempList[row] = self.VerseListWidget.item(row).text()
295 self.VerseListWidget.clear()
296 for row in range (0, len(tempList)):
297 self.VerseListWidget.addItem(tempList[row])
298 self.VerseListWidget.repaint()
288 self.VerseEditButton.setEnabled(False)299 self.VerseEditButton.setEnabled(False)
289 self.VerseDeleteButton.setEnabled(False)300 self.VerseDeleteButton.setEnabled(False)
290301