Merge lp:~j-corwin/openlp/bug-1085921 into lp:openlp/2.0

Proposed by Jonathan Corwin
Status: Merged
Merged at revision: 2120
Proposed branch: lp:~j-corwin/openlp/bug-1085921
Merge into: lp:openlp/2.0
Diff against target: 146 lines (+41/-45)
3 files modified
openlp/plugins/songs/forms/songexportform.py (+3/-4)
openlp/plugins/songs/lib/__init__.py (+36/-2)
openlp/plugins/songs/lib/mediaitem.py (+2/-39)
To merge this branch: bzr merge lp:~j-corwin/openlp/bug-1085921
Reviewer Review Type Date Requested Status
Tim Bentley Approve
Review via email: mp+139549@code.launchpad.net

Description of the change

Fix song export (In 2.0)

To post a comment you must log in.
Revision history for this message
Tim Bentley (trb143) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openlp/plugins/songs/forms/songexportform.py'
2--- openlp/plugins/songs/forms/songexportform.py 2012-11-11 21:16:14 +0000
3+++ openlp/plugins/songs/forms/songexportform.py 2012-12-12 19:23:23 +0000
4@@ -34,11 +34,11 @@
5
6 from PyQt4 import QtCore, QtGui
7
8-from openlp.core.lib import build_icon, Receiver, SettingsManager, translate, \
9+from openlp.core.lib import build_icon, Receiver, translate, \
10 create_separated_list
11 from openlp.core.lib.ui import UiStrings, critical_error_message_box
12 from openlp.core.ui.wizard import OpenLPWizard, WizardStrings
13-from openlp.core.utils import locale_direct_compare
14+from openlp.plugins.songs.lib import natcmp
15 from openlp.plugins.songs.lib.db import Song
16 from openlp.plugins.songs.lib.openlyricsexport import OpenLyricsExport
17
18@@ -253,8 +253,7 @@
19 # Load the list of songs.
20 Receiver.send_message(u'cursor_busy')
21 songs = self.plugin.manager.get_all_objects(Song)
22- songs.sort(
23- cmp=locale_direct_compare, key=lambda song: song.sort_string)
24+ songs.sort(cmp=natcmp, key=lambda song: song.sort_key)
25 for song in songs:
26 # No need to export temporary songs.
27 if song.temporary:
28
29=== modified file 'openlp/plugins/songs/lib/__init__.py'
30--- openlp/plugins/songs/lib/__init__.py 2012-11-11 21:16:14 +0000
31+++ openlp/plugins/songs/lib/__init__.py 2012-12-12 19:23:23 +0000
32@@ -28,10 +28,10 @@
33 ###############################################################################
34 import re
35
36-from PyQt4 import QtGui
37+from PyQt4 import QtGui, QtCore
38
39 from openlp.core.lib import translate
40-from openlp.core.utils import CONTROL_CHARS
41+from openlp.core.utils import CONTROL_CHARS, locale_direct_compare
42 from db import Author
43 from ui import SongStrings
44
45@@ -594,6 +594,40 @@
46 text = u''.join(out)
47 return text, default_encoding
48
49+def natcmp(a, b):
50+ """
51+ Natural string comparison which mimics the behaviour of Python's internal
52+ cmp function.
53+ """
54+ if len(a) <= len(b):
55+ for i, key in enumerate(a):
56+ if isinstance(key, int) and isinstance(b[i], int):
57+ result = cmp(key, b[i])
58+ elif isinstance(key, int) and not isinstance(b[i], int):
59+ result = locale_direct_compare(QtCore.QString(str(key)), b[i])
60+ elif not isinstance(key, int) and isinstance(b[i], int):
61+ result = locale_direct_compare(key, QtCore.QString(str(b[i])))
62+ else:
63+ result = locale_direct_compare(key, b[i])
64+ if result != 0:
65+ return result
66+ if len(a) == len(b):
67+ return 0
68+ else:
69+ return -1
70+ else:
71+ for i, key in enumerate(b):
72+ if isinstance(a[i], int) and isinstance(key, int):
73+ result = cmp(a[i], key)
74+ elif isinstance(a[i], int) and not isinstance(key, int):
75+ result = locale_direct_compare(QtCore.QString(str(a[i])), key)
76+ elif not isinstance(a[i], int) and isinstance(key, int):
77+ result = locale_direct_compare(a[i], QtCore.QString(str(key)))
78+ else:
79+ result = locale_direct_compare(a[i], key)
80+ if result != 0:
81+ return result
82+ return 1
83
84 from xml import OpenLyrics, SongXML
85 from songstab import SongsTab
86
87=== modified file 'openlp/plugins/songs/lib/mediaitem.py'
88--- openlp/plugins/songs/lib/mediaitem.py 2012-11-21 18:45:37 +0000
89+++ openlp/plugins/songs/lib/mediaitem.py 2012-12-12 19:23:23 +0000
90@@ -40,54 +40,17 @@
91 check_directory_exists
92 from openlp.core.lib.ui import UiStrings, create_widget_action
93 from openlp.core.lib.settings import Settings
94-from openlp.core.utils import AppLocation, locale_direct_compare
95+from openlp.core.utils import AppLocation
96 from openlp.plugins.songs.forms import EditSongForm, SongMaintenanceForm, \
97 SongImportForm, SongExportForm
98 from openlp.plugins.songs.lib import OpenLyrics, SongXML, VerseType, \
99- clean_string
100+ clean_string, natcmp
101 from openlp.plugins.songs.lib.db import Author, Song, Book, MediaFile
102 from openlp.plugins.songs.lib.ui import SongStrings
103
104 log = logging.getLogger(__name__)
105
106
107-def natcmp(a, b):
108- """
109- Natural string comparison which mimics the behaviour of Python's internal
110- cmp function.
111- """
112- log.debug('a: %s; b: %s', a, b)
113- if len(a) <= len(b):
114- for i, key in enumerate(a):
115- if isinstance(key, int) and isinstance(b[i], int):
116- result = cmp(key, b[i])
117- elif isinstance(key, int) and not isinstance(b[i], int):
118- result = locale_direct_compare(QtCore.QString(str(key)), b[i])
119- elif not isinstance(key, int) and isinstance(b[i], int):
120- result = locale_direct_compare(key, QtCore.QString(str(b[i])))
121- else:
122- result = locale_direct_compare(key, b[i])
123- if result != 0:
124- return result
125- if len(a) == len(b):
126- return 0
127- else:
128- return -1
129- else:
130- for i, key in enumerate(b):
131- if isinstance(a[i], int) and isinstance(key, int):
132- result = cmp(a[i], key)
133- elif isinstance(a[i], int) and not isinstance(key, int):
134- result = locale_direct_compare(QtCore.QString(str(a[i])), key)
135- elif not isinstance(a[i], int) and isinstance(key, int):
136- result = locale_direct_compare(a[i], QtCore.QString(str(key)))
137- else:
138- result = locale_direct_compare(a[i], key)
139- if result != 0:
140- return result
141- return 1
142-
143-
144 class SongSearch(object):
145 """
146 An enumeration for song search methods.

Subscribers

People subscribed via source and target branches