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 return False
def delete_song(self, songid): def delete_song(self, songid):
print songid
song = self.get_song(songid) song = self.get_song(songid)
print song.title
try: try:
self.session.delete(song) self.session.delete(song)
self.session.commit() self.session.commit()
print "ok"
return True return True
except: except:
print "error"
self.session.rollback() self.session.rollback()
log.exception(u'Could not delete song from song database') log.exception(u'Could not delete song from song database')
return False return False

View File

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

View File

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

View File

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

View File

@ -194,7 +194,10 @@ class SongsPlugin(Plugin):
log.exception('Could not import SoF file') log.exception('Could not import SoF file')
QtGui.QMessageBox.critical(None, QtGui.QMessageBox.critical(None,
self.ImportSongMenu.trUtf8('Import Error'), 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.StandardButtons(QtGui.QMessageBox.Ok),
QtGui.QMessageBox.Ok) QtGui.QMessageBox.Ok)