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:
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'),
self.trUtf8('Delete %d songs?' % len(items)),
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[:]:
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':
@ -316,6 +316,7 @@ class SofImport(object):
+ authors[i + 1].strip().split(u' ')[-1]
if author2.endswith(u'.'):
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,8 +120,8 @@ 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
"""
@ -129,13 +129,17 @@ class SongImport(object):
if oldverse.strip() == verse.strip():
self.verse_order_list.append(oldversetag)
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)