cleanups+multi-song delete

This commit is contained in:
Jonathan Corwin 2010-04-03 20:17:37 +01:00
parent dad04bfd90
commit 3ceb0267e9
5 changed files with 36 additions and 29 deletions

View File

@ -111,12 +111,16 @@ class SongManager():
return False
def delete_song(self, songid):
print songid
song = self.get_song(songid)
print song.title
try:
self.session.delete(song)
self.session.commit()
print "ok"
return True
except:
print "error"
self.session.rollback()
log.exception(u'Could not delete song from song database')
return False

View File

@ -273,19 +273,21 @@ class SongMediaItem(MediaManagerItem):
def onDeleteClick(self):
items = self.ListView.selectedIndexes()
if items:
if len(items) > 1:
ans = QtGui.QMessageBox.question(None,
self.trUtf8('Delete Confirmation'),
self.trUtf8('Delete %d songs?' % len(items)),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok|
QtGui.QMessageBox.Cancel),
QtGui.QMessageBox.Ok)
if ans == QtGui.QMessageBox.Cancel:
return
for item in items[:]:
if len(items) == 1:
del_message = self.trUtf8('Delete song?')
else:
del_message = self.trUtf8('Delete %d song?' % len(items))
ans = QtGui.QMessageBox.question(None,
self.trUtf8('Delete Confirmation'), del_message,
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok|
QtGui.QMessageBox.Cancel),
QtGui.QMessageBox.Ok)
if ans == QtGui.QMessageBox.Cancel:
return
for item in items:
item_id = (item.data(QtCore.Qt.UserRole)).toInt()[0]
self.parent.songmanager.delete_song(item_id)
self.ListView.takeItem(item.row())
self.onSearchTextButtonClick()
def generateSlideData(self, service_item):
raw_footer = []

View File

@ -32,7 +32,7 @@ property# -*- coding: utf-8 -*-
import re
import os
import time
from PyQt4 import QtCore, QtGui
from PyQt4 import QtCore
from songimport import SongImport
if os.name == u'nt':
@ -315,8 +315,9 @@ class SofImport(object):
author2 = author2 + u' ' \
+ authors[i + 1].strip().split(u' ')[-1]
if author2.endswith(u'.'):
author2 = author2[:-1]
self.song.add_author(author2)
author2 = author2[:-1]
if author2:
self.song.add_author(author2)
def add_verse_line(self, text):
"""
@ -340,17 +341,10 @@ class SofImport(object):
if self.currentverse.strip() == u'':
return
if self.is_chorus:
if not self.song.contains_verse('C'):
versetag = 'C'
elif not self.song.contains_verse('B'):
versetag = 'B'
elif not self.song.contains_verse('E'):
versetag = 'E'
else:
versetag = 'O'
versetag = u'C'
splitat = None
else:
versetag = 'V'
versetag = u'V'
splitat = self.verse_splits(self.song.get_song_number())
if splitat:
ln = 0

View File

@ -120,22 +120,26 @@ class SongImport(object):
def add_verse(self, verse, versetag):
"""
Add a verse. This is the whole verse, lines split by \n
Verse tag can be V1/C/B etc, or 'V' (will count the verses/
itself) or None, where it will assume verse
Verse tag can be V1/C1/B etc, or 'V' and 'C' (will count the verses/
choruses itself) or None, where it will assume verse
It will also attempt to detect duplicates. In this case it will just
add to the verse order
"""
for (oldversetag, oldverse) in self.verses:
if oldverse.strip() == verse.strip():
self.verse_order_list.append(oldversetag)
return
return
if versetag.startswith(u'C'):
self.choruscount += 1
if versetag == u'C':
versetag += unicode(self.choruscount)
if versetag == u'V' or not versetag:
self.versecount += 1
versetag = u'V' + unicode(self.versecount)
self.verses.append([versetag, verse.rstrip()])
self.verse_order_list.append(versetag)
if versetag.startswith(u'V') and self.contains_verse(u'C'):
self.verse_order_list.append(u'C')
if versetag.startswith(u'V') and self.contains_verse(u'C1'):
self.verse_order_list.append(u'C1')
def repeat_verse(self):
"""

View File

@ -194,7 +194,10 @@ class SongsPlugin(Plugin):
log.exception('Could not import SoF file')
QtGui.QMessageBox.critical(None,
self.ImportSongMenu.trUtf8('Import Error'),
self.ImportSongMenu.trUtf8('Error importing Songs of Fellowship file'),
self.ImportSongMenu.trUtf8('Error importing Songs of '
+ 'Fellowship file.\nOpenOffice.org must be installed'
+ ' and you must be using an unedited copy of the RTF'
+ ' included with the Songs of Fellowship Music Editions'),
QtGui.QMessageBox.StandardButtons(QtGui.QMessageBox.Ok),
QtGui.QMessageBox.Ok)