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 | ||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Raoul Snyman | Approve | ||
Review via email: mp+9148@code.launchpad.net |
This proposal supersedes a proposal from 2009-07-22.
Commit message
Description of the change
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 | # |
Revision history for this message
Raoul Snyman (raoul-snyman) wrote : Posted in a previous version of this proposal | # |
Sorry if I gave you the wrong impression, but I don't think this will work. CP1252 is a Windows-specific code. We need to find the encoding that matches this.
17 + infile = codecs.open(inname, 'r', encoding='CP1252')
Otherwise everything else looks fine.
review:
Needs Fixing
Revision history for this message
Raoul Snyman (raoul-snyman) : | # |
review:
Approve
lp:~trb143/openlp/bugfixes
updated
- 496. By Tim Bentley
-
Fix up song dialog errors
Fix servicemanager key entry
Fix servicemanager state handling
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'cnvdb.py' | |||
2 | --- cnvdb.py 2009-07-19 06:31:08 +0000 | |||
3 | +++ cnvdb.py 2009-07-21 18:10:14 +0000 | |||
4 | @@ -20,6 +20,7 @@ | |||
5 | 20 | """ | 20 | """ |
6 | 21 | import codecs | 21 | import codecs |
7 | 22 | import sys | 22 | import sys |
8 | 23 | import chardet | ||
9 | 23 | 24 | ||
10 | 24 | def convert_file(inname, outname): | 25 | def convert_file(inname, outname): |
11 | 25 | """ | 26 | """ |
12 | @@ -31,7 +32,7 @@ | |||
13 | 31 | ``outname`` | 32 | ``outname`` |
14 | 32 | The output file name. | 33 | The output file name. |
15 | 33 | """ | 34 | """ |
17 | 34 | infile = codecs.open(inname, 'r', encoding='iso-8859-1') | 35 | infile = codecs.open(inname, 'r', encoding='CP1252') |
18 | 35 | writefile = codecs.open(outname, 'w', encoding='utf-8') | 36 | writefile = codecs.open(outname, 'w', encoding='utf-8') |
19 | 36 | for line in infile: | 37 | for line in infile: |
20 | 37 | #replace the quotes with quotes | 38 | #replace the quotes with quotes |
21 | 38 | 39 | ||
22 | === modified file 'openlp/core/lib/renderer.py' | |||
23 | --- openlp/core/lib/renderer.py 2009-07-15 17:33:31 +0000 | |||
24 | +++ openlp/core/lib/renderer.py 2009-07-21 20:04:27 +0000 | |||
25 | @@ -40,6 +40,7 @@ | |||
26 | 40 | self._debug = 0 | 40 | self._debug = 0 |
27 | 41 | self._right_margin = 64 # the amount of right indent | 41 | self._right_margin = 64 # the amount of right indent |
28 | 42 | self._shadow_offset = 5 | 42 | self._shadow_offset = 5 |
29 | 43 | self._shadow_offset_footer = 3 | ||
30 | 43 | self._outline_offset = 2 | 44 | self._outline_offset = 2 |
31 | 44 | self.theme_name = None | 45 | self.theme_name = None |
32 | 45 | self._theme = None | 46 | self._theme = None |
33 | @@ -482,15 +483,17 @@ | |||
34 | 482 | # dont allow alignment messing with footers | 483 | # dont allow alignment messing with footers |
35 | 483 | if footer: | 484 | if footer: |
36 | 484 | align = 0 | 485 | align = 0 |
37 | 486 | shadow_offset = self._shadow_offset_footer | ||
38 | 485 | else: | 487 | else: |
39 | 486 | align = int(self._theme .display_horizontalAlign) | 488 | align = int(self._theme .display_horizontalAlign) |
40 | 489 | shadow_offset = self._shadow_offset | ||
41 | 487 | for linenum in range(len(lines)): | 490 | for linenum in range(len(lines)): |
42 | 488 | line = lines[linenum] | 491 | line = lines[linenum] |
43 | 489 | #find out how wide line is | 492 | #find out how wide line is |
44 | 490 | w , h = self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=False) | 493 | w , h = self._get_extent_and_render(line, footer, tlcorner=(x, y), draw=False) |
45 | 491 | if self._theme.display_shadow: | 494 | if self._theme.display_shadow: |
48 | 492 | w += self._shadow_offset | 495 | w += shadow_offset |
49 | 493 | h += self._shadow_offset | 496 | h += shadow_offset |
50 | 494 | if self._theme.display_outline: | 497 | if self._theme.display_outline: |
51 | 495 | # pixels either side | 498 | # pixels either side |
52 | 496 | w += 2 * self._outline_offset | 499 | w += 2 * self._outline_offset |
53 | @@ -515,7 +518,7 @@ | |||
54 | 515 | if live: | 518 | if live: |
55 | 516 | # now draw the text, and any outlines/shadows | 519 | # now draw the text, and any outlines/shadows |
56 | 517 | if self._theme.display_shadow: | 520 | if self._theme.display_shadow: |
58 | 518 | self._get_extent_and_render(line, footer, tlcorner=(x+self._shadow_offset,y+self._shadow_offset), | 521 | self._get_extent_and_render(line, footer, tlcorner=(x + shadow_offset, y + shadow_offset), |
59 | 519 | draw=True, color = self._theme.display_shadow_color) | 522 | draw=True, color = self._theme.display_shadow_color) |
60 | 520 | if self._theme.display_outline: | 523 | if self._theme.display_outline: |
61 | 521 | self._get_extent_and_render(line, footer, (x+self._outline_offset,y), draw=True, | 524 | self._get_extent_and_render(line, footer, (x+self._outline_offset,y), draw=True, |
62 | 522 | 525 | ||
63 | === modified file 'openlp/core/ui/maindisplay.py' | |||
64 | --- openlp/core/ui/maindisplay.py 2009-07-19 07:40:31 +0000 | |||
65 | +++ openlp/core/ui/maindisplay.py 2009-07-21 18:10:14 +0000 | |||
66 | @@ -62,12 +62,22 @@ | |||
67 | 62 | self.showFullScreen() | 62 | self.showFullScreen() |
68 | 63 | else: | 63 | else: |
69 | 64 | self.showMinimized() | 64 | self.showMinimized() |
70 | 65 | #Build a custom splash screen | ||
71 | 66 | self.InitialFrame = QtGui.QImage(screen[u'size'].width(), | ||
72 | 67 | screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied) | ||
73 | 68 | splash_image = QtGui.QImage(u':/graphics/openlp-splash-screen.png') | ||
74 | 69 | painter_image = QtGui.QPainter() | ||
75 | 70 | painter_image.begin(self.InitialFrame) | ||
76 | 71 | painter_image.fillRect(self.InitialFrame.rect(), QtCore.Qt.white) | ||
77 | 72 | painter_image.drawImage((screen[u'size'].width() - splash_image.width()) / 2, | ||
78 | 73 | (screen[u'size'].height() - splash_image.height()) / 2 , splash_image) | ||
79 | 74 | self.frameView(self.InitialFrame) | ||
80 | 75 | #Build a Black screen | ||
81 | 65 | painter = QtGui.QPainter() | 76 | painter = QtGui.QPainter() |
82 | 66 | self.blankFrame = QtGui.QImage(screen[u'size'].width(), | 77 | self.blankFrame = QtGui.QImage(screen[u'size'].width(), |
83 | 67 | screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied) | 78 | screen[u'size'].height(), QtGui.QImage.Format_ARGB32_Premultiplied) |
84 | 68 | painter.begin(self.blankFrame) | 79 | painter.begin(self.blankFrame) |
85 | 69 | painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black) | 80 | painter.fillRect(self.blankFrame.rect(), QtCore.Qt.black) |
86 | 70 | self.frameView(self.blankFrame) | ||
87 | 71 | 81 | ||
88 | 72 | def frameView(self, frame): | 82 | def frameView(self, frame): |
89 | 73 | """ | 83 | """ |
90 | 74 | 84 | ||
91 | === modified file 'openlp/core/ui/servicemanager.py' | |||
92 | --- openlp/core/ui/servicemanager.py 2009-07-11 05:18:34 +0000 | |||
93 | +++ openlp/core/ui/servicemanager.py 2009-07-21 20:04:27 +0000 | |||
94 | @@ -41,9 +41,38 @@ | |||
95 | 41 | if event.key() == QtCore.Qt.Key_Enter: | 41 | if event.key() == QtCore.Qt.Key_Enter: |
96 | 42 | self.parent.makeLive() | 42 | self.parent.makeLive() |
97 | 43 | event.accept() | 43 | event.accept() |
101 | 44 | event.ignore() | 44 | elif event.key() == QtCore.Qt.Key_Home: |
102 | 45 | else: | 45 | self.parent.onServiceTop() |
103 | 46 | event.ignore() | 46 | event.accept() |
104 | 47 | elif event.key() == QtCore.Qt.Key_End: | ||
105 | 48 | self.parent.onServiceEnd() | ||
106 | 49 | event.accept() | ||
107 | 50 | elif event.key() == QtCore.Qt.Key_PageUp: | ||
108 | 51 | self.parent.onServiceUp() | ||
109 | 52 | event.accept() | ||
110 | 53 | elif event.key() == QtCore.Qt.Key_PageDown: | ||
111 | 54 | self.parent.onServiceDown() | ||
112 | 55 | event.accept() | ||
113 | 56 | elif event.key() == QtCore.Qt.Key_Up: | ||
114 | 57 | self.parent.onMoveSelectionUp() | ||
115 | 58 | event.accept() | ||
116 | 59 | elif event.key() == QtCore.Qt.Key_Down: | ||
117 | 60 | self.parent.onMoveSelectionDown() | ||
118 | 61 | event.accept() | ||
119 | 62 | event.ignore() | ||
120 | 63 | else: | ||
121 | 64 | event.ignore() | ||
122 | 65 | |||
123 | 66 | class Iter(QtGui.QTreeWidgetItemIterator): | ||
124 | 67 | def __init__(self, *args): | ||
125 | 68 | QtGui.QTreeWidgetItemIterator.__init__(self, *args) | ||
126 | 69 | def next(self): | ||
127 | 70 | self.__iadd__(1) | ||
128 | 71 | value = self.value() | ||
129 | 72 | if value: | ||
130 | 73 | return self.value() | ||
131 | 74 | else: | ||
132 | 75 | return None | ||
133 | 47 | 76 | ||
134 | 48 | class ServiceManager(QtGui.QWidget): | 77 | class ServiceManager(QtGui.QWidget): |
135 | 49 | """ | 78 | """ |
136 | @@ -134,6 +163,52 @@ | |||
137 | 134 | self.servicePath = self.config.get_data_path() | 163 | self.servicePath = self.config.get_data_path() |
138 | 135 | self.service_theme = self.config.get_config(u'theme service theme', u'') | 164 | self.service_theme = self.config.get_config(u'theme service theme', u'') |
139 | 136 | 165 | ||
140 | 166 | def onMoveSelectionUp(self): | ||
141 | 167 | """ | ||
142 | 168 | Moves the selection up the window | ||
143 | 169 | Called by the up arrow | ||
144 | 170 | """ | ||
145 | 171 | it = Iter(self.ServiceManagerList) | ||
146 | 172 | item = it.value() | ||
147 | 173 | tempItem = None | ||
148 | 174 | setLastItem = False | ||
149 | 175 | while item is not None: | ||
150 | 176 | if item.isSelected() and tempItem is None: | ||
151 | 177 | setLastItem = True | ||
152 | 178 | item.setSelected(False) | ||
153 | 179 | if item.isSelected(): | ||
154 | 180 | #We are on the first record | ||
155 | 181 | if tempItem is not None: | ||
156 | 182 | tempItem.setSelected(True) | ||
157 | 183 | item.setSelected(False) | ||
158 | 184 | else: | ||
159 | 185 | tempItem = item | ||
160 | 186 | lastItem = item | ||
161 | 187 | item = it.next() | ||
162 | 188 | #Top Item was selected so set the last one | ||
163 | 189 | if setLastItem: | ||
164 | 190 | lastItem.setSelected(True) | ||
165 | 191 | |||
166 | 192 | def onMoveSelectionDown(self): | ||
167 | 193 | """ | ||
168 | 194 | Moves the selection down the window | ||
169 | 195 | Called by the down arrow | ||
170 | 196 | """ | ||
171 | 197 | it = Iter(self.ServiceManagerList) | ||
172 | 198 | item = it.value() | ||
173 | 199 | firstItem = item | ||
174 | 200 | setSelected = False | ||
175 | 201 | while item is not None: | ||
176 | 202 | if setSelected: | ||
177 | 203 | setSelected = False | ||
178 | 204 | item.setSelected(True) | ||
179 | 205 | elif item.isSelected(): | ||
180 | 206 | item.setSelected(False) | ||
181 | 207 | setSelected = True | ||
182 | 208 | item = it.next() | ||
183 | 209 | if setSelected: | ||
184 | 210 | firstItem.setSelected(True) | ||
185 | 211 | |||
186 | 137 | def collapsed(self, item): | 212 | def collapsed(self, item): |
187 | 138 | """ | 213 | """ |
188 | 139 | Record if an item is collapsed | 214 | Record if an item is collapsed |
189 | @@ -159,7 +234,7 @@ | |||
190 | 159 | temp = self.serviceItems[item] | 234 | temp = self.serviceItems[item] |
191 | 160 | self.serviceItems.remove(self.serviceItems[item]) | 235 | self.serviceItems.remove(self.serviceItems[item]) |
192 | 161 | self.serviceItems.insert(0, temp) | 236 | self.serviceItems.insert(0, temp) |
194 | 162 | self.repaintServiceList() | 237 | self.repaintServiceList(0, count) |
195 | 163 | self.parent.OosChanged(False, self.serviceName) | 238 | self.parent.OosChanged(False, self.serviceName) |
196 | 164 | 239 | ||
197 | 165 | def onServiceUp(self): | 240 | def onServiceUp(self): |
198 | @@ -172,7 +247,7 @@ | |||
199 | 172 | temp = self.serviceItems[item] | 247 | temp = self.serviceItems[item] |
200 | 173 | self.serviceItems.remove(self.serviceItems[item]) | 248 | self.serviceItems.remove(self.serviceItems[item]) |
201 | 174 | self.serviceItems.insert(item - 1, temp) | 249 | self.serviceItems.insert(item - 1, temp) |
203 | 175 | self.repaintServiceList() | 250 | self.repaintServiceList(item - 1 , count) |
204 | 176 | self.parent.OosChanged(False, self.serviceName) | 251 | self.parent.OosChanged(False, self.serviceName) |
205 | 177 | 252 | ||
206 | 178 | def onServiceDown(self): | 253 | def onServiceDown(self): |
207 | @@ -185,7 +260,7 @@ | |||
208 | 185 | temp = self.serviceItems[item] | 260 | temp = self.serviceItems[item] |
209 | 186 | self.serviceItems.remove(self.serviceItems[item]) | 261 | self.serviceItems.remove(self.serviceItems[item]) |
210 | 187 | self.serviceItems.insert(item + 1, temp) | 262 | self.serviceItems.insert(item + 1, temp) |
212 | 188 | self.repaintServiceList() | 263 | self.repaintServiceList(item + 1 , count) |
213 | 189 | self.parent.OosChanged(False, self.serviceName) | 264 | self.parent.OosChanged(False, self.serviceName) |
214 | 190 | 265 | ||
215 | 191 | def onServiceEnd(self): | 266 | def onServiceEnd(self): |
216 | @@ -197,7 +272,7 @@ | |||
217 | 197 | temp = self.serviceItems[item] | 272 | temp = self.serviceItems[item] |
218 | 198 | self.serviceItems.remove(self.serviceItems[item]) | 273 | self.serviceItems.remove(self.serviceItems[item]) |
219 | 199 | self.serviceItems.insert(len(self.serviceItems), temp) | 274 | self.serviceItems.insert(len(self.serviceItems), temp) |
221 | 200 | self.repaintServiceList() | 275 | self.repaintServiceList(len(self.serviceItems) - 1, count) |
222 | 201 | self.parent.OosChanged(False, self.serviceName) | 276 | self.parent.OosChanged(False, self.serviceName) |
223 | 202 | 277 | ||
224 | 203 | def onNewService(self): | 278 | def onNewService(self): |
225 | @@ -216,10 +291,10 @@ | |||
226 | 216 | item, count = self.findServiceItem() | 291 | item, count = self.findServiceItem() |
227 | 217 | if item is not -1: | 292 | if item is not -1: |
228 | 218 | self.serviceItems.remove(self.serviceItems[item]) | 293 | self.serviceItems.remove(self.serviceItems[item]) |
230 | 219 | self.repaintServiceList() | 294 | self.repaintServiceList(0, 0) |
231 | 220 | self.parent.OosChanged(False, self.serviceName) | 295 | self.parent.OosChanged(False, self.serviceName) |
232 | 221 | 296 | ||
234 | 222 | def repaintServiceList(self): | 297 | def repaintServiceList(self, serviceItem, serviceItemCount): |
235 | 223 | """ | 298 | """ |
236 | 224 | Clear the existing service list and prepaint all the items | 299 | Clear the existing service list and prepaint all the items |
237 | 225 | Used when moving items as the move takes place in supporting array, | 300 | Used when moving items as the move takes place in supporting array, |
238 | @@ -232,20 +307,20 @@ | |||
239 | 232 | count += 1 | 307 | count += 1 |
240 | 233 | #Repaint the screen | 308 | #Repaint the screen |
241 | 234 | self.ServiceManagerList.clear() | 309 | self.ServiceManagerList.clear() |
243 | 235 | for item in self.serviceItems: | 310 | for itemcount, item in enumerate(self.serviceItems): |
244 | 236 | serviceitem = item[u'data'] | 311 | serviceitem = item[u'data'] |
245 | 237 | treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList) | 312 | treewidgetitem = QtGui.QTreeWidgetItem(self.ServiceManagerList) |
246 | 238 | treewidgetitem.setText(0,serviceitem.title) | 313 | treewidgetitem.setText(0,serviceitem.title) |
247 | 239 | treewidgetitem.setIcon(0,serviceitem.iconic_representation) | 314 | treewidgetitem.setIcon(0,serviceitem.iconic_representation) |
248 | 240 | treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(item[u'order'])) | 315 | treewidgetitem.setData(0, QtCore.Qt.UserRole, QtCore.QVariant(item[u'order'])) |
249 | 241 | treewidgetitem.setExpanded(item[u'expanded']) | 316 | treewidgetitem.setExpanded(item[u'expanded']) |
252 | 242 | count = 0 | 317 | for count , frame in enumerate(serviceitem.frames): |
251 | 243 | for frame in serviceitem.frames: | ||
253 | 244 | treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem) | 318 | treewidgetitem1 = QtGui.QTreeWidgetItem(treewidgetitem) |
254 | 245 | text = frame[u'title'] | 319 | text = frame[u'title'] |
255 | 246 | treewidgetitem1.setText(0,text[:40]) | 320 | treewidgetitem1.setText(0,text[:40]) |
256 | 247 | treewidgetitem1.setData(0, QtCore.Qt.UserRole,QtCore.QVariant(count)) | 321 | treewidgetitem1.setData(0, QtCore.Qt.UserRole,QtCore.QVariant(count)) |
258 | 248 | count = count + 1 | 322 | if serviceItem == itemcount and serviceItemCount == count: |
259 | 323 | self.ServiceManagerList.setCurrentItem(treewidgetitem1) | ||
260 | 249 | 324 | ||
261 | 250 | def onSaveService(self): | 325 | def onSaveService(self): |
262 | 251 | """ | 326 | """ |
263 | 252 | 327 | ||
264 | === modified file 'openlp/plugins/songs/forms/authorsform.py' | |||
265 | --- openlp/plugins/songs/forms/authorsform.py 2009-07-18 05:43:50 +0000 | |||
266 | +++ openlp/plugins/songs/forms/authorsform.py 2009-07-22 06:14:34 +0000 | |||
267 | @@ -63,6 +63,7 @@ | |||
268 | 63 | else: | 63 | else: |
269 | 64 | self.AuthorListWidget.setCurrentRow(self.currentRow) | 64 | self.AuthorListWidget.setCurrentRow(self.currentRow) |
270 | 65 | self._validate_form() | 65 | self._validate_form() |
271 | 66 | self.onAuthorListWidgetItemClicked() | ||
272 | 66 | 67 | ||
273 | 67 | def onDeleteButtonClick(self): | 68 | def onDeleteButtonClick(self): |
274 | 68 | """ | 69 | """ |
275 | @@ -100,31 +101,32 @@ | |||
276 | 100 | self._validate_form() | 101 | self._validate_form() |
277 | 101 | self.DisplayEdit.setFocus() | 102 | self.DisplayEdit.setFocus() |
278 | 102 | 103 | ||
280 | 103 | def onAuthorListWidgetItemClicked(self, index): | 104 | def onAuthorListWidgetItemClicked(self): |
281 | 104 | """ | 105 | """ |
282 | 105 | An Author has been selected display it | 106 | An Author has been selected display it |
283 | 106 | If the author is attached to a Song prevent delete | 107 | If the author is attached to a Song prevent delete |
284 | 107 | """ | 108 | """ |
285 | 108 | self.currentRow = self.AuthorListWidget.currentRow() | 109 | self.currentRow = self.AuthorListWidget.currentRow() |
286 | 109 | item = self.AuthorListWidget.currentItem() | 110 | item = self.AuthorListWidget.currentItem() |
305 | 110 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] | 111 | if item is not None: |
306 | 111 | self.author = self.songmanager.get_author(item_id) | 112 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] |
307 | 112 | self.DisplayEdit.setText(self.author.display_name) | 113 | self.author = self.songmanager.get_author(item_id) |
308 | 113 | if self.author.first_name is None: | 114 | self.DisplayEdit.setText(self.author.display_name) |
309 | 114 | self.FirstNameEdit.setText(u'') | 115 | if self.author.first_name is None: |
310 | 115 | else: | 116 | self.FirstNameEdit.setText(u'') |
311 | 116 | self.FirstNameEdit.setText(self.author.first_name) | 117 | else: |
312 | 117 | if self.author.last_name is None: | 118 | self.FirstNameEdit.setText(self.author.first_name) |
313 | 118 | self.LastNameEdit.setText(u'') | 119 | if self.author.last_name is None: |
314 | 119 | else: | 120 | self.LastNameEdit.setText(u'') |
315 | 120 | self.LastNameEdit.setText(self.author.last_name) | 121 | else: |
316 | 121 | if len(self.author.songs) > 0: | 122 | self.LastNameEdit.setText(self.author.last_name) |
317 | 122 | self.MessageLabel.setText(translate(u'AuthorForm', u'Author in use "Delete" is disabled')) | 123 | if len(self.author.songs) > 0: |
318 | 123 | self.DeleteButton.setEnabled(False) | 124 | self.MessageLabel.setText(translate(u'AuthorForm', u'Author in use "Delete" is disabled')) |
319 | 124 | else: | 125 | self.DeleteButton.setEnabled(False) |
320 | 125 | self.MessageLabel.setText(translate(u'AuthorForm', u'Author in not used')) | 126 | else: |
321 | 126 | self.DeleteButton.setEnabled(True) | 127 | self.MessageLabel.setText(translate(u'AuthorForm', u'Author in not used')) |
322 | 127 | self._validate_form() | 128 | self.DeleteButton.setEnabled(True) |
323 | 129 | self._validate_form() | ||
324 | 128 | self.DisplayEdit.setFocus() | 130 | self.DisplayEdit.setFocus() |
325 | 129 | 131 | ||
326 | 130 | def _validate_form(self): | 132 | def _validate_form(self): |
327 | 131 | 133 | ||
328 | === modified file 'openlp/plugins/songs/forms/songbookform.py' | |||
329 | --- openlp/plugins/songs/forms/songbookform.py 2009-07-14 18:38:33 +0000 | |||
330 | +++ openlp/plugins/songs/forms/songbookform.py 2009-07-22 06:14:34 +0000 | |||
331 | @@ -62,6 +62,7 @@ | |||
332 | 62 | self.BookSongListWidget.setCurrentRow(self.BookSongListWidget.count() - 1) | 62 | self.BookSongListWidget.setCurrentRow(self.BookSongListWidget.count() - 1) |
333 | 63 | else: | 63 | else: |
334 | 64 | self.BookSongListWidget.setCurrentRow(self.currentRow) | 64 | self.BookSongListWidget.setCurrentRow(self.currentRow) |
335 | 65 | self.onBooksListViewItemClicked() | ||
336 | 65 | 66 | ||
337 | 66 | def onDeleteButtonClick(self): | 67 | def onDeleteButtonClick(self): |
338 | 67 | """ | 68 | """ |
339 | @@ -98,24 +99,25 @@ | |||
340 | 98 | self._validate_form() | 99 | self._validate_form() |
341 | 99 | self.NameEdit.setFocus() | 100 | self.NameEdit.setFocus() |
342 | 100 | 101 | ||
344 | 101 | def onBooksListViewItemClicked(self, index): | 102 | def onBooksListViewItemClicked(self): |
345 | 102 | """ | 103 | """ |
346 | 103 | An Book has been selected display it | 104 | An Book has been selected display it |
347 | 104 | If the Book is attached to a Song prevent delete | 105 | If the Book is attached to a Song prevent delete |
348 | 105 | """ | 106 | """ |
349 | 106 | self.currentRow = self.BookSongListWidget.currentRow() | 107 | self.currentRow = self.BookSongListWidget.currentRow() |
350 | 107 | item = self.BookSongListWidget.currentItem() | 108 | item = self.BookSongListWidget.currentItem() |
362 | 108 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] | 109 | if item is not None: |
363 | 109 | self.Book = self.songmanager.get_book(item_id) | 110 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] |
364 | 110 | self.NameEdit.setText(self.Book.name) | 111 | self.Book = self.songmanager.get_book(item_id) |
365 | 111 | self.PublisherEdit.setText(self.Book.publisher) | 112 | self.NameEdit.setText(self.Book.name) |
366 | 112 | if len(self.Book.songs) > 0: | 113 | self.PublisherEdit.setText(self.Book.publisher) |
367 | 113 | self.MessageLabel.setText(translate(u'BookForm', u'Book in use "Delete" is disabled')) | 114 | if len(self.Book.songs) > 0: |
368 | 114 | self.DeleteButton.setEnabled(False) | 115 | self.MessageLabel.setText(translate(u'BookForm', u'Book in use "Delete" is disabled')) |
369 | 115 | else: | 116 | self.DeleteButton.setEnabled(False) |
370 | 116 | self.MessageLabel.setText(translate(u'BookForm', u'Book in not used')) | 117 | else: |
371 | 117 | self.DeleteButton.setEnabled(True) | 118 | self.MessageLabel.setText(translate(u'BookForm', u'Book in not used')) |
372 | 118 | self._validate_form() | 119 | self.DeleteButton.setEnabled(True) |
373 | 120 | self._validate_form() | ||
374 | 119 | self.NameEdit.setFocus() | 121 | self.NameEdit.setFocus() |
375 | 120 | 122 | ||
376 | 121 | def _validate_form(self): | 123 | def _validate_form(self): |
377 | 122 | 124 | ||
378 | === modified file 'openlp/plugins/songs/forms/topicsform.py' | |||
379 | --- openlp/plugins/songs/forms/topicsform.py 2009-07-14 18:38:33 +0000 | |||
380 | +++ openlp/plugins/songs/forms/topicsform.py 2009-07-22 06:14:34 +0000 | |||
381 | @@ -63,6 +63,7 @@ | |||
382 | 63 | else: | 63 | else: |
383 | 64 | self.TopicsListWidget.setCurrentRow(self.currentRow) | 64 | self.TopicsListWidget.setCurrentRow(self.currentRow) |
384 | 65 | self._validate_form() | 65 | self._validate_form() |
385 | 66 | self.onTopicsListWidgetItemClicked() | ||
386 | 66 | 67 | ||
387 | 67 | def onDeleteButtonClick(self): | 68 | def onDeleteButtonClick(self): |
388 | 68 | """ | 69 | """ |
389 | @@ -97,23 +98,24 @@ | |||
390 | 97 | self._validate_form() | 98 | self._validate_form() |
391 | 98 | self.TopicNameEdit.setFocus() | 99 | self.TopicNameEdit.setFocus() |
392 | 99 | 100 | ||
394 | 100 | def onTopicsListWidgetItemClicked(self, index): | 101 | def onTopicsListWidgetItemClicked(self): |
395 | 101 | """ | 102 | """ |
396 | 102 | An Topic has been selected display it | 103 | An Topic has been selected display it |
397 | 103 | If the Topic is attached to a Song prevent delete | 104 | If the Topic is attached to a Song prevent delete |
398 | 104 | """ | 105 | """ |
399 | 105 | self.currentRow = self.TopicsListWidget.currentRow() | 106 | self.currentRow = self.TopicsListWidget.currentRow() |
400 | 106 | item = self.TopicsListWidget.currentItem() | 107 | item = self.TopicsListWidget.currentItem() |
411 | 107 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] | 108 | if item is not None: |
412 | 108 | self.topic = self.songmanager.get_topic(item_id) | 109 | item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0] |
413 | 109 | self.TopicNameEdit.setText(self.topic.name) | 110 | self.topic = self.songmanager.get_topic(item_id) |
414 | 110 | if len(self.topic.songs) > 0: | 111 | self.TopicNameEdit.setText(self.topic.name) |
415 | 111 | self.MessageLabel.setText(translate(u'TopicForm', u'Topic in use "Delete" is disabled')) | 112 | if len(self.topic.songs) > 0: |
416 | 112 | self.DeleteButton.setEnabled(False) | 113 | self.MessageLabel.setText(translate(u'TopicForm', u'Topic in use "Delete" is disabled')) |
417 | 113 | else: | 114 | self.DeleteButton.setEnabled(False) |
418 | 114 | self.MessageLabel.setText(translate(u'TopicForm', u'Topic in not used')) | 115 | else: |
419 | 115 | self.DeleteButton.setEnabled(True) | 116 | self.MessageLabel.setText(translate(u'TopicForm', u'Topic in not used')) |
420 | 116 | self._validate_form() | 117 | self.DeleteButton.setEnabled(True) |
421 | 118 | self._validate_form() | ||
422 | 117 | self.TopicNameEdit.setFocus() | 119 | self.TopicNameEdit.setFocus() |
423 | 118 | 120 | ||
424 | 119 | def _validate_form(self): | 121 | def _validate_form(self): |
425 | 120 | 122 | ||
426 | === modified file 'openlp/plugins/songs/lib/mediaitem.py' | |||
427 | --- openlp/plugins/songs/lib/mediaitem.py 2009-07-18 05:43:50 +0000 | |||
428 | +++ openlp/plugins/songs/lib/mediaitem.py 2009-07-21 18:10:14 +0000 | |||
429 | @@ -289,7 +289,7 @@ | |||
430 | 289 | else: | 289 | else: |
431 | 290 | verses = song.lyrics.split(u'\n\n') | 290 | verses = song.lyrics.split(u'\n\n') |
432 | 291 | for slide in verses: | 291 | for slide in verses: |
434 | 292 | service_item.add_from_text(slide[:30], slide) | 292 | service_item.add_from_text(slide[:30], unicode(slide)) |
435 | 293 | service_item.title = song.title | 293 | service_item.title = song.title |
436 | 294 | for author in song.authors: | 294 | for author in song.authors: |
437 | 295 | if len(author_list) > 1: | 295 | if len(author_list) > 1: |
Add Keyboard events to ServiceManage
Add Splash Screen to Display Screen
Fix Renderer for footers